首页 > 解决方案 > Python 3.7 在虚拟环境中阻碍其他 Python 版本的使用

问题描述

我安装了 Python 3.6.3 和 Python 3.7,当我尝试使用 3.6.3 设置虚拟环境时,它会引发错误,尽管尝试遵循下面列出的 SO 链接的建议,但似乎正在调用 Python 3.7 . Windows 10 并首先检查 Python 3.6.3 可执行文件的位置:

C:\>py -3.6
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
import sys
print(sys.executable) #C:\Python\python.exe

现在遵循此处接受的答案:

C:\>mkdir pyvirtenv && cd pyvirtenv
C:\pyvirtenv>py -3.6 -m venv pyvirtenv

我收到以下错误:

File "C:\Python37\lib\runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "C:\Python37\lib\runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "C:\Python37\lib\runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "C:\Python37\lib\venv\__init__.py", line 7, in <module>
    import logging
  File "C:\Python37\lib\logging\__init__.py", line 26, in <module>
    import sys, os, time, io, traceback, warnings, weakref, collections.abc
  File "C:\Python37\lib\traceback.py", line 5, in <module>
    import linecache
  File "C:\Python37\lib\linecache.py", line 11, in <module>
    import tokenize
  File "C:\Python37\lib\tokenize.py", line 33, in <module>
    import re
  File "C:\Python37\lib\re.py", line 123, in <module>
    import sre_compile
  File "C:\Python37\lib\sre_compile.py", line 17, in <module>
    assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch

似乎即使使用 3.6 命令也正在调用 Python 3.7 然后我尝试了上一篇文章中接受的答案所建议的进一步替代方法,即:用可执行路径替换 py -3.6 但同样的错误仍然存​​在

还尝试使用 virutalenv 而不是 venv ,如此处 Windows 特定解决方案中所述,最终错误保持不变:

C:\pyvirtenv>virtualenv -p C:\Python\python.exe pyvirtenv
Traceback (most recent call last):
  File "C:\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python\Scripts\virtualenv.exe\__main__.py", line 2, in <module>
  File "C:\Python37\lib\re.py", line 123, in <module>
    import sre_compile
  File "C:\Python37\lib\sre_compile.py", line 17, in <module>
    assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch

使用 Python 3.7 设置虚拟环境工作正常,即使在我从 PATH 中完全删除 Python 3.7 并重新启动后,上述问题仍然存在。

谢谢

编辑

py -3.6 -m site根据评论中的要求添加输出:

sys.path = [
    'C:\\pyvirtenv',
    'C:\\Python\\python36.zip',
    'C:\\Python37\\DLLs',
    'C:\\Python37\\lib',
    'C:\\Python37',
    'C:\\',
]
USER_BASE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python\\Python36\\site-packages' (doesn't exist)
ENABLE_USER_SITE: False

编辑2

基于以下第二轮评论的进一步更新:

c: \> py -3.6 -c "import site; print(site.__file__)" #C:\Python37\lib\site.py
c:\>python37\lib\site.py
sys.path = [
    'C:\\python37\\lib',
    'C:\\Python37\\python37.zip',
    'C:\\Python37\\DLLs',
    'C:\\Python37',
    'C:\\',
]
USER_BASE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python\\Python37\\site-packages' (doesn't exist)
ENABLE_USER_SITE: False

标签: pythonpython-3.xwindowspython-venv

解决方案


从技术上讲,这不是您问题的答案,但如果您继续遇到相同的问题,它肯定是一个考虑的选择。无论如何,我建议您尝试使用Conda虚拟环境管理器。它似乎对 windows 和 unix 系统都非常有效。

您还可以阅读此问题以开始设置以前的 python 版本环境。

希望这可以帮助。


推荐阅读