【发布时间】:2021-10-04 00:39:05
【问题描述】:
在 Python 中编程时,我经常使用虚拟环境(使用 venv)。这总是很好,但最近我现有的一些虚拟环境似乎“坏了”。当我尝试激活和使用它们时,我收到以下错误:
Failed to import the site module
Traceback (most recent call last):
File "c:\temp\virtualenv\lib\site.py", line 703, in <module>
main()
File "c:\temp\virtualenv\lib\site.py", line 683, in main
paths_in_sys = addsitepackages(paths_in_sys)
File "c:\temp\virtualenv\lib\site.py", line 282, in addsitepackages
addsitedir(sitedir, known_paths)
File "c:\temp\virtualenv\lib\site.py", line 204, in addsitedir
addpackage(sitedir, name, known_paths)
File "c:\temp\virtualenv\lib\site.py", line 173, in addpackage
exec(line)
File "<string>", line 1, in <module>
File "c:\temp\virtualenv\lib\importlib\util.py", line 13, in <module>
from contextlib import contextmanager
ModuleNotFoundError: No module named 'contextlib'
这很奇怪,因为contextlib 是标准 Python 库的一部分,我不明白为什么它找不到它。由于这个错误,我什至无法运行 python(python --version 或其他不需要加载任何 Python 模块的选项)或 pip(甚至 pip --version 都不起作用)。
之前有人问过并回答过这个问题,比如here 和here,但是没有一个答案解释了为什么会发生这个错误,并且都只提供了一种解决方法,即删除并重新创建虚拟环境。这很令人沮丧,因为我并不总是知道我以前安装了哪些软件包,而且我现在不能pip freeze,所以重新创建相同的虚拟环境可能需要很多时间。
我想知道为什么会出现这个错误,以及是否有不强制我重新创建虚拟环境的解决方案。
排除其他一些不相关的问题:
- 我的操作系统是 Windows 10。
- 虚拟环境是使用
venv和 Python 3.x(主要是 3.6 或更高版本)创建的。 - 我没有移动(重新定位)虚拟环境。
- 虚拟环境位于本地目录(不是网络驱动器)上。
【问题讨论】:
标签: python importerror python-venv