gpt4 book ai didi

python - 如何在目录中的文件上运行gunicorn?

转载 作者:行者123 更新时间:2023-12-04 13:18:01 30 4
gpt4 key购买 nike

我有一个使用应用程序工厂的 flask 应用程序,我可以将 gunicorn 运行为 gunicorn "run:create_app()"这工作得很好。

但是,我想从它的父目录运行它,比如 gunicorn "application.run:create_app"gunicorn "application/run:create_app"
如何在没有 --chdir 的情况下做到这一点?

最佳答案

你已经列出了应该工作的模式 - 该参数是 full dotted path到一个 python 模块,加上来自该模块的一个变量,它是一个应用程序对象。所以如果我们有一个文件 parent_dir/myproject/uwsgi.py与内容

from application import create_app
app = create_app()

我们可以像运行 gunicorn
# From myproject
gunicorn uwsgi:app
# from parent_dir
gunicorn myproject.uwsgi:app

现在,我怀疑您看到的问题是点分路径表示法要求父目录是一个 python 包——这意味着您需要有一个 __init__.py我的项目中的文件。否则解释器将不会在该文件夹中查找 python 文件以使其可导入。

Python 将查看其 PYTHONPATH 上的任何目录。从那里,任何模块都将是顶级的,任何带有 __init__.py 的目录都将是顶级的。文件将是包。默认行为是将当前目录添加到 PYTHONPATH 变量。所以具有以下结构
foldera
packagea
__init__.py
modulea.py
folderb
packageb
__init__.py
moduleb.py
folderc
packagec
modulec.py

来自 foldera你可以做 import packagea.modulea但不是 import packageb.moduleb .从文件夹 packagea你可以做 import modulea但不是 import packagea.modulea (包裹不在路径上!)。来自 folderc您无法导入任何这些模块 - PYTHONPATH 上没有任何包或模块。如果您确实设置了 export PYTHONPATH=foldera:folderb:folderc:$PYTHONPATH ,您可以导入 packagea.moduleapackageb.moduleb .您仍然无法导入 modulecmoduleamoduleb没有完整的虚线路径。

关于python - 如何在目录中的文件上运行gunicorn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57944088/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com