python - 虚拟环境的问题 - 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”时它工作正常,但我试图理解为什么其他命令不起作用。
解决方案
它来自同一文件夹中名为“collections.py”的python文件
该模块以某种方式隐藏collections
了标准库中的模块。当typing.py
尝试 importcollections.abc
时,导入机制会找到您的模块名为collections
first,但您的模块不是包含模块 name 的包abc
,因此您会收到错误消息。
最简单的解决方法是将您自己的文件重命名为其他文件。然而,Python 引入了绝对导入和相对导入之间的区别来解决此类冲突。可能有一种方法可以构建您的目录,以避免您的本地模块代替标准库模块。
virtualvenv
与模块完全不同的脚本venv
;它可能不会尝试导入标准collections
模块,因此名称冲突不会影响它。
推荐阅读
- safari - Safari CSP 忽略 nonce 和 unsafe-inline
- vb.net - 您将如何使用 VB.Net 通过 FTP 编辑 .txt 文件
- python-3.x - 无法在 Ubuntu 16.04 LTS 上安装 pyautogui
- laravel - Laravel - 试图获取非对象的属性“名称”(查看:C:\xampp\htdocs\jairusreport\resources\views\layouts\header.blade.php)
- java - 返回 UsbDevice 端口(或唯一值)
- python-3.x - 如何更改终端中的目录?(非常初学者的问题)
- flutter - Flutter - 在应用程序编译期间向包添加依赖项并不能解决依赖项问题
- delphi - 将带有联合的c结构转换为Delphi记录
- kubernetes - External-dns 看不到 Istio 网关
- c# - 如何在 ASP.NET Core 项目中添加引用