Jib*_*hew 5 python flask gunicorn
我有一个使用应用程序工厂的烧瓶应用程序,我可以运行gunicorn,并且gunicorn "run:create_app()"工作正常。
但是,我想从它的父目录运行它,例如gunicorn "application.run:create_app"或gunicorn "application/run:create_app"
没有--chdir 如何做到这一点?
您已经列出了应该起作用的模式 - 该参数是full dotted pathpython 模块的 a ,加上该模块中作为应用程序对象的变量。parent_dir/myproject/uwsgi.py所以如果我们有一个包含内容的文件
from application import create_app
app = create_app()
Run Code Online (Sandbox Code Playgroud)
我们可以像这样运行gunicorn
# From myproject
gunicorn uwsgi:app
# from parent_dir
gunicorn myproject.uwsgi:app
Run Code Online (Sandbox Code Playgroud)
现在,我怀疑您遇到的问题是,点分路径表示法要求父目录是 python 包,这意味着您需要__init__.py在 myproject 中有一个文件。否则,解释器将不会在该文件夹内查找 python 文件以使它们可导入。
Python 将查找其 PYTHONPATH 上的任何目录。从那里开始,任何模块都将是顶级的,并且任何带有__init__.py文件的目录都将是包。默认行为是将当前目录添加到 PYTHONPATH 变量中。所以用下面的结构
foldera
packagea
__init__.py
modulea.py
folderb
packageb
__init__.py
moduleb.py
folderc
packagec
modulec.py
Run Code Online (Sandbox Code Playgroud)
从foldera你可以做import packagea.modulea但不能做import packageb.moduleb。packagea从您可以执行import modulea但不能执行的文件夹中import packagea.modulea(该包不在路径上!)。您无法folderc导入任何这些模块 - PYTHONPATH 上没有任何包或模块。如果您确实设置了export PYTHONPATH=foldera:folderb:folderc:$PYTHONPATH,则可以导入packagea.moduleaAND packageb.moduleb。您仍然无法导入modulec或modulea或moduleb没有完整的点路径。
| 归档时间: |
|
| 查看次数: |
6087 次 |
| 最近记录: |