我正在运行 Windows 10 计算机,并且我正在开始使用虚拟环境。我想运行一个小型 fastapi 应用程序
我创建了一个像这样的venv:
python -m venv venv
然后我激活了 venv,并安装了我的两个依赖项:
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> pip install fastapi
和
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> pip install unicorn
这似乎工作正常,运行 pip list 似乎也表明我有我需要的东西:
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> pip list
Package Version
----------------- ---------
beautifulsoup4 4.9.3
certifi 2020.6.20
cffi 1.14.3
chardet 3.0.4
crypto 1.4.1
cryptography 3.1.1
cycler 0.10.0
fastapi 0.63.0
idna 2.10
myModule 1.0.0
Naked 0.1.31
pip 21.0.1
pycparser 2.20
pycrypto 2.6.1
pydantic 1.8.1
PyYAML 5.3.1
requests 2.24.0
setuptools 49.2.1
shellescape 3.8.1
six 1.15.0
soupsieve 2.0.1
starlette 0.13.6
typing-extensions 3.7.4.3
unicorn 1.0.2
urllib3 1.25.10
wheel 0.35.1
但是当我运行我的程序时,它因导入 fastapI 而失败:
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> python .\main.py
Traceback (most recent call last):
File "C:\Users\Ask\python_Projects\garse_dockerAPI\app\main.py", line 3, in <module>
from fastapi import FastAPI
另外,运行 python 我的终端也不想这样做:
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import fastapi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'fastapi'
发生什么事了?为什么我没有我需要的依赖项?
编辑:
为了在我的机器上找到安装,我在普通终端中运行了“where python”:
C:\Users\Ask>where python
C:\Users\Ask\AppData\Local\Programs\Python\Python39\python.exe
C:\Users\Ask\AppData\Local\Microsoft\WindowsApps\python.exe
这给了我两条不同的道路。我真的不知道如何处理这些信息? 运行在哪里 pip:
C:\Users\Ask>where pip
C:\Users\Ask\AppData\Local\Programs\Python\Python39\Scripts\pip.exe
当我在 venv 中运行它时,命令根本不输出任何内容:
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> where pip
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app> where python
(venv) PS C:\Users\Ask\python_Projects\garse_dockerAPI\app>
我绝对推荐使用
python3 -m pip
而不是纯粹的 pip
。它可能会帮你省去一些头痛。原因:当我使用 pip
在 venv
虚拟环境中安装新软件包时,它们最终出现在我的操作系统环境中!但仅仅使用 python3 -m pip
就可以了。
为了确保从虚拟环境调用包,您可以使用
python3 -m PACKAGE_NAME
而不是 PACKAGE_NAME
。例如,flower
在我的虚拟环境中不起作用,但python3 -m flower
可以正常工作。
您可以直接询问
python
它是从哪里执行的!试试这个:
>>> import sys
>>> print(sys.executable)
/PATH/TO/VENV/bin/python
>>> print(sys.version)
'3.10.5 (main, Jun 6 2022, 18:49:26) [GCC 12.1.0]'
我也遇到同样的问题。你解决了吗?