Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 子包结构的根路径_Python_Docker_Flask - Fatal编程技术网

Python 子包结构的根路径

Python 子包结构的根路径,python,docker,flask,Python,Docker,Flask,我正在寻找关于使用多个包(包括flask项目)建立python回购的建议。这可能是一个docker问题,就像python/flask问题一样,所以我愿意接受任何有助于解决这一问题的模式 我的应用程序结构是这样的(注意:这看起来像命名空间打包,但我已经配置了setup.py以便每个包都有自己的命名空间): 但是从开发的角度来看,我对这种模式有一些问题。基本上我知道我可以用Flask(\uuuuu name\uuuuuu,root\u path='/app/src/my\u Flask\u app)

我正在寻找关于使用多个包(包括flask项目)建立python回购的建议。这可能是一个docker问题,就像python/flask问题一样,所以我愿意接受任何有助于解决这一问题的模式

我的应用程序结构是这样的(注意:这看起来像命名空间打包,但我已经配置了
setup.py
以便每个包都有自己的命名空间):

但是从开发的角度来看,我对这种模式有一些问题。基本上我知道我可以用
Flask(\uuuuu name\uuuuuu,root\u path='/app/src/my\u Flask\u app)
覆盖
root\u path
,让它找到合适的源目录。但是,这需要根据我是在Docker映像中运行还是在本地运行来更改

例如,如果我打印本地运行的
app.root\u路径
(不修改),我会看到
/Users/username/Documents/my\u app/src/my\u flask\u app
。如果我在docker中运行此程序,它必须是
/app/src/my_flask\u app
,才能正常工作(默认为
/app/my_flask\u app
,未经修改,已损坏)


我的主要问题是:是否有一些简单的方法来处理这个问题,构造项目/dockerfile来实现这一点,这样我就不必在本地和docker运行实例之间不断更改它了?我应该改用Flask(instance_path=)吗?

解决了这个问题,这似乎对docker和local都适用:

import os
from flask import Flask

app = Flask(__name__, root_path=os.path.join(os.getcwd() + '/src/my_flask_app'))
import os
from flask import Flask

app = Flask(__name__, root_path=os.path.join(os.getcwd() + '/src/my_flask_app'))