我的虚拟环境有问题,我正在学习 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
正如您所看到的,出于某种原因,它正在从文件夹“learning”中名为 collections.py 的文件中返回代码......不知道为什么。 现在当我使用“virtualenv venv”时它工作正常,但我试图理解为什么另一个命令不起作用。
答案 0 :(得分:1)
您已经创建了虚拟环境 (venv
)。无需再次输入 python -m venv venv
。
要激活虚拟环境 (venv
),请键入
PS C:\Users\XXX\Desktop\learning> venv/Scripts/activate
这将激活 powershell 中名为 venv
的虚拟环境。
答案 1 :(得分:1)
它来自同一文件夹中名为“collections.py”的python文件
该模块以某种方式掩盖了标准库中的 collections
模块。当 typing.py
尝试导入 collections.abc
时,导入机制首先查找名为 collections
的您的模块,但您的模块不是包含模块名称的包abc
,所以你会得到错误。
最简单的解决方法是将您自己的文件重命名为其他名称。但是,Python 引入了绝对导入和相对导入之间的差异来解决此类冲突。可能有一种方法来构建您的目录,以避免您的本地模块隐藏标准库模块。
virtualvenv
是与 venv
模块完全不同的脚本;它可能不会尝试导入标准的 collections
模块,因此名称冲突不会影响它。
答案 2 :(得分:0)
在 VSCode 中,您还可以通过选择左下角的 setserial
来激活它。这是确认您使用的环境的简单参考。