簡體   English   中英

venv 找不到 python 庫,即使我確實安裝了它

[英]venv cannot find python library even though I definitely have it installed

我正在運行 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 列表似乎也表明我有我需要的東西:

(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 中運行它時,命令 output 什么都沒有:

(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 它可能會為您節省一些頭痛。 原因:當我使用pipvenv虛擬環境中安裝新軟件包時,它們最終出現在我的操作系統環境中! 但只需使用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]'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM