簡體   English   中英

虛擬環境問題 - python

[英]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.

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