如何在使用uvicorn时设置PYTHONPATH?

3

我正在使用一个 Python 程序 (main.py),该程序依赖于一个自制模块 (myhomebrewmodule)。

main.py 位于 myhomebrewmodule 文件夹内。

如果我在 IDE 中运行 main.py,我只需要将 myhomebrewmodule 的路径添加到 PYTHONPATH 中即可。

我也可以 从终端暂时添加此路径到 PYTHONPATH

但是当我使用 uvicorn 时应该如何操作呢?

当我尝试:

export PYTHONPATH="pathtomyhomebrewmodule"

然后:

uvicorn main:app --reload

我遇到了 ModuleNotFoundError。

2个回答

2

我可以在终端中暂时将此路径添加到PYTHONPATH。

我猜这是一个可行的方法,而且不太难实现。它是临时的,只要应用程序正在运行就可以了。

但是当使用uvicorn时应该如何操作呢?

假设目录结构如下:

/path/to/project/
    |- project/
        |- main.py
        |- utils.py
    |- start.sh
    |- venv/

我介绍了一个名为 start.sh 的脚本,内容如下:
#!/bin/bash

set -Eeuo pipefail

PYTHONPATH=project/:/path/to/myhomebrewmodule/ ./venv/bin/uvicorn project.main:app --host 127.0.0.1 --port 8080 --reload

我假设你正在使用Python的虚拟环境,因此有一个名为venv的文件夹。
如你所见,PYTHONPATH已被更改以包括project//path/to/myhomebrewmodule/
PYTHONPATH也可以直接导出,这可能会提高start.sh脚本的可读性(缩短):
export PYTHONPATH=project/:/path/to/myhomebrewmodule/
./venv/bin/uvicorn project.main:app --host 127.0.0.1 --port 8080 --reload

我希望这能对你有所帮助,不知道是否为时已晚 ;)


0
自uvicorn 0.11.7开始,您可以使用--app-dir选项指定应用程序目录。
uvicorn --app-dir c:\users\user\projects\new_app\backend\src app.main:app --host 0.0.0.0 --port 8000 --reload

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接