[英]Issue with virtual environment - python
我的虛擬環境有問題,我正在學習 python,所以真的不知道這里有什么問題。
我的桌面上有一個名為“learning”的文件夾,我試圖在其中創建一個名為 venv 的虛擬環境。
當我在 VSCode 中時,我正在使用終端並編寫python -m venv venv
,它會輸出以下內容:
PS C:\Users\XXX\Desktop\learning> virtualenv venv
created virtual environment CPython3.9.5.final.0-64 in 1553ms
creator CPython3Windows(dest=C:\Users\XXX\Desktop\learning\venv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\XXX\AppData\Local\pypa\virtualenv)
added seed packages: pip==21.1.2, setuptools==57.0.0, wheel==0.36.2
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
PS C:\Users\XXX\Desktop\learning> python -m venv venv
[{'first': 'Csr', 'last': 'vR'}, {'first': 'Jessie', 'last': 'vdd'}, {'first': 'Bill', 'last': 'Gates'}]
Traceback (most recent call last):
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 15, in <module>
import importlib.util
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\importlib\util.py", line 2, in <module>
from . import abc
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\importlib\abc.py", line 17, in <module>
from typing import Protocol, runtime_checkable
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\typing.py", line 22, in <module>
import collections.abc
ModuleNotFoundError: No module named 'collections.abc'; 'collections' is not a package
PS C:\Users\XXX\Desktop\learning> python -m venv try
[{'first': 'Csr', 'last': 'vR'}, {'first': 'Jessie', 'last': 'vdd'}, {'first': 'Bill', 'last': 'Gates'}]
Could not import runpy module
Traceback (most recent call last):
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 15, in <module>
import importlib.util
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\importlib\util.py", line 2, in <module>
from . import abc
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\importlib\abc.py", line 17, in <module>
from typing import Protocol, runtime_checkable
File "C:\Users\XXX\AppData\Local\Programs\Python\Python39\lib\typing.py", line 22, in <module>
import collections.abc
ModuleNotFoundError: No module named 'collections.abc'; 'collections' is not a package
正如您所看到的,出於某種原因,它正在從“學習”文件夾中名為 collections.py 的文件中提取代碼......不知道為什么。 現在當我使用“virtualenv venv”時它工作正常,但我試圖理解為什么另一個命令不起作用。
您已經創建了虛擬環境 ( venv
)。 無需再次鍵入python -m venv venv
。
要激活虛擬環境 ( venv
),請鍵入
PS C:\Users\XXX\Desktop\learning> venv/Scripts/activate
這將在 powershell 中激活名為venv
的虛擬環境。
它來自名為“collections.py”的同一文件夾中的python文件
該模塊以某種方式隱藏了標准庫中的collections
模塊。 當typing.py
嘗試導入collections.abc
,導入機制首先查找名為collections
的模塊,但您的模塊不是包含模塊名稱abc
的包,因此您會收到錯誤消息。
最簡單的解決方法是將您自己的文件重命名為其他名稱。 但是,Python 引入了絕對導入和相對導入之間的差異來解決此類沖突。 可能有一種方法來構建您的目錄,以避免您的本地模塊隱藏標准庫模塊。
virtualvenv
是與venv
模塊完全不同的腳本; 它可能不會嘗試導入標准collections
模塊,因此名稱沖突不會影響它。
在 VSCode 中,您還可以通過在venv
選擇它來激活venv
。 這是確認您使用的環境的簡單參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.