Msys2中Python2.7与3.8共存:如何正确加载对应site.py
Msys2中Python2与Python3兼容配置方案
问题原因
Python2启动时错误加载了Python3的site.py文件——Python2的语法不支持Python3里print()函数的file=关键字参数,因此触发语法错误。这是因为Python2的运行环境被Python3的路径干扰了。
解决步骤
1. 清理环境变量干扰
检查PYTHONPATH是否包含Python3的路径:
echo $PYTHONPATH
如果输出中有Python3相关路径,先临时清除再启动Python2:
unset PYTHONPATH python2
若要长期生效,可在~/.bashrc中添加unset PYTHONPATH(或按需设置仅对应版本的路径)。
2. 明确指定版本启动
Msys2中默认的版本区分命令:
python/python3→ 启动Python3.8python2→ 启动Python2.7
如果python2仍指向错误路径,可检查PATH变量中Python2的bin目录是否在Python3之前,或直接用绝对路径启动:
# 示例路径,根据你的实际安装位置调整 /usr/bin/python2
3. 配置版本隔离的环境(可选)
修改~/.bashrc添加别名和独立的路径配置:
# Python2配置 alias python2='/usr/bin/python2' export PYTHONPATH='/usr/lib/python2.7/site-packages' # Python3配置 alias python='/usr/bin/python3' export PYTHONPATH3='/usr/lib/python3.8/site-packages'
执行source ~/.bashrc使配置生效。
site.py的路径规则
site.py是Python标准库的核心文件,其加载路径由以下逻辑决定:
- 优先使用Python编译时内置的标准库路径(即
lib/pythonX.X/,X.X为对应版本号),这是默认且最高优先级的路径。 - 如果设置了
PYTHONPATH环境变量,Python会先搜索该变量指定的路径——这正是你遇到问题的原因,Python2读取了PYTHONPATH中的Python3路径,加载了错误的site.py。 - 最后会加载用户目录下的
~/.local/lib/pythonX.X/site-packages/,但这部分不会影响核心的site.py加载。
内容的提问来源于stack exchange,提问作者sancho.s ReinstateMonicaCellio
相关产品推荐
相关产品推荐

