python - 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
解决方案
推荐阅读
- php - DateTimeImmutable 方法类型在运行时不可见
- java - 使用 java 和 Selenium 将驱动程序从 chrome 切换到 electron
- sql - SQL Server:在where条件下将表达式转换为数据类型int的算术溢出错误
- javascript - 如何在另一个类的函数的函数中访问一个类的函数
- javascript - 无法使用自定义验证器测试 React propType
- sql-server - 使用 YYYYMM 上个月的 SQL Server 日期计算
- powershell - 如何比较两个不同 CSV 文件的列?
- python - 如何使用 selenium 和 scrapy 抓取一个网站,当您单击“下一页”按钮时不会更改其 url
- python - python请求:(SSLError(1,'[SSL:WRONG_VERSION_NUMBER]错误的版本号(_ssl.c:1123)'))
- android - 在不同的进程(在多进程应用程序中)初始化 Firebase 不起作用