虚拟环境问题 - python

时间:2021-06-16 20:26:54

标签: python virtualenv

我的虚拟环境有问题,我正在学习 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”时它工作正常,但我试图理解为什么另一个命令不起作用。

3 个答案:

答案 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 来激活它。这是确认您使用的环境的简单参考。