我有一个文件夹,里面有我的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文件夹中找到我的依赖项
4条答案
按热度按时间fnvucqvd1#
可能你也在你的虚拟环境之外安装了
uvicorn
,所以当你在终端中运行这个命令时,它会尝试使用那个安装而不是venv的版本,并且找不到依赖项。尝试使用整个路径调用
uvicorn
,如下所示:将
./venv/
替换为虚拟环境的文件夹。djmepvbi2#
确保激活虚拟环境:
source your_project_location/venv/bin/activate
在Linux和windows上只需写入激活文件的路径。然后用PIP(当虚拟环境激活时)安装任何缺少的依赖项。f45qwnt83#
这个问题与皮普有关。我在我的venv中,但是当我运行pip时,它是针对/usr/local路径而不是venv路径。为了解决这个问题,我写出了venv pip的路径,并以这种方式安装它
这不是最好的解决办法。当我运行哪个uvicorn时,它仍然显示
/usr/local/bin/uvicorn
,而不是我的venv路径aydmsdu94#
当
which uvicorn
告诉你二进制地址是/usr/local/bin/uvicorn
时,这意味着两件事:root
或sudo
。以下步骤将确保Uvicorn从您自己的虚拟环境中运行:
python3 -m venv ~/uvicornvenv
. ~/uvicornvenv/bin/activate
pip install -U pip
pip install uvicorn fastapi
确保Uvicorn和FastAPI安装正确,并且来自新的虚拟环境:
无论何时你想使用你的虚拟环境,特别是在你安装其他模块之前,不要忘记先运行
. ~/uvicornvenv/bin/activate
!我用Python 3.10.12在Ubuntu 22.04.3 LTS上测试了上述步骤。