我刚刚安装了新版本的Python。
安装正确:
C:\Development\pythontest>python --version
Python 3.12.3
当我尝试创建新的 venv 时,它失败了:
C:\Development\pythontest>python -m venv myvenv
Could not import runpy module
Traceback (most recent call last):
File "<frozen runpy>", line 15, in <module>
File "<frozen importlib.util>", line 2, in <module>
ModuleNotFoundError: No module named 'importlib._abc'
我的机器上有一个旧版本(3.9),可以正常工作。不知道这是怎么回事。正如您通过第一个命令所看到的,我更改了路径,因此我知道它正在调用 3.12.3 的版本。
作品:
C:\Users\linda\AppData\Local\Programs\Python\Python39\python.exe -m venv myenv
不起作用:
C:\Users\linda\AppData\Local\Programs\Python\Python312\python.exe -m venv myenv
Could not import runpy module
Traceback (most recent call last):
File "<frozen runpy>", line 15, in <module>
File "<frozen importlib.util>", line 2, in <module>
ModuleNotFoundError: No module named 'importlib._abc'
通过 PyCharm 也会发生同样的事情:
我尝试使用 Python 3.9 在 venv 上进行升级:
C:\Development\pythonsucks>python -m myenv --upgrade m2
Could not import runpy module
Traceback (most recent call last):
File "<frozen runpy>", line 15, in <module>
File "<frozen importlib.util>", line 2, in <module>
ModuleNotFoundError: No module named 'importlib._abc'
Python 启动器:
C:\Development\pythonsucks>"C:\Program Files\Python312\python.exe" -m venv myenv
Could not import runpy module
Traceback (most recent call last):
File "<frozen runpy>", line 15, in <module>
File "<frozen importlib.util>", line 2, in <module>
ModuleNotFoundError: No module named 'importlib._abc'
C:\Development\pythonsucks>py --version
Python 3.12.3
C:\Development\pythonsucks>py -0p
-V:3.12 * C:\Program Files\Python312\python.exe
-V:3.9 C:\Users\linda\AppData\Local\Programs\Python\Python39\python.exe
C:\Development\pythonsucks>py -m venv test
Could not import runpy module
Traceback (most recent call last):
File "<frozen runpy>", line 15, in <module>
File "<frozen importlib.util>", line 2, in <module>
ModuleNotFoundError: No module named 'importlib._abc'
我开始认为 3.12 中有些东西出了问题。
如果 PYTHONHOME 指向另一个 python 解释器的路径,则环境中的该路径用于查找标准库。由于 api 不匹配、可能添加和弃用,您所描述的问题可能并且将会发生。
建议,确保 PYTHONHOME 设置正确或取消设置。