python Uvicorn找不到模块

q5iwbnjs  于 2023-09-29  发布在  Python
关注(0)|答案(4)|浏览(381)

我有一个文件夹,里面有我的venv依赖项和一个python文件。
当我用python main.py运行python文件时,它可以工作。
当我用uvicorn main:app --reload运行python文件时,它会对所有依赖项抛出一个模块未找到错误。我想把www.example.com变成main.py一个fastapi应用程序,并安装fastapi和uvicorn到我的venv和做app = FASTAPI()
为什么在运行python的时候它可以工作,但是uvicorn找不到我的依赖项?
我卸载了uvicorn,并重新安装在我的venv。我希望它能在我的venv文件夹中找到我的依赖项

fnvucqvd

fnvucqvd1#

可能你也在你的虚拟环境之外安装了uvicorn,所以当你在终端中运行这个命令时,它会尝试使用那个安装而不是venv的版本,并且找不到依赖项。
尝试使用整个路径调用uvicorn,如下所示:

./venv/bin/uvicorn main:app --reload

./venv/替换为虚拟环境的文件夹。

djmepvbi

djmepvbi2#

确保激活虚拟环境:source your_project_location/venv/bin/activate在Linux和windows上只需写入激活文件的路径。然后用PIP(当虚拟环境激活时)安装任何缺少的依赖项。

f45qwnt8

f45qwnt83#

这个问题与皮普有关。我在我的venv中,但是当我运行pip时,它是针对/usr/local路径而不是venv路径。为了解决这个问题,我写出了venv pip的路径,并以这种方式安装它
这不是最好的解决办法。当我运行哪个uvicorn时,它仍然显示/usr/local/bin/uvicorn,而不是我的venv路径

aydmsdu9

aydmsdu94#

which uvicorn告诉你二进制地址是/usr/local/bin/uvicorn时,这意味着两件事:

  • 安装Uvicorn时没有活动的虚拟环境。
  • Uvicorn安装为rootsudo

以下步骤将确保Uvicorn从您自己的虚拟环境中运行:

  • 在用户的主目录中创建新的虚拟环境:

python3 -m venv ~/uvicornvenv

  • 在安装任何新模块之前,激活虚拟环境:

. ~/uvicornvenv/bin/activate

  • 更新pip本身:

pip install -U pip

  • 安装Uvicorn和FastAPI:

pip install uvicorn fastapi
确保Uvicorn和FastAPI安装正确,并且来自新的虚拟环境:

$ uvicorn --version
Running uvicorn 0.23.2 with CPython 3.10.12 on Linux

$ which uvicorn
/home/<youruser>/uvicornvenv/bin/uvicorn

$ pip show uvicorn | grep -E "Name:|Version:|Location:"
Name: uvicorn
Version: 0.23.2
Location: /home/<youruser>/uvicornvenv/lib/python3.10/site-packages

$ pip show fastapi | grep -E "Name:|Version:|Location:"
Name: fastapi
Version: 0.103.1
Location: /home/<youruser>/uvicornvenv/lib/python3.10/site-packages

无论何时你想使用你的虚拟环境,特别是在你安装其他模块之前,不要忘记先运行. ~/uvicornvenv/bin/activate
我用Python 3.10.12在Ubuntu 22.04.3 LTS上测试了上述步骤。

相关问题