CentOS7下PYTHONHOME未设置致Python及Mercurial命令失效求助
解决CentOS 7下Python及Mercurial报错问题
问题重现
执行Python或Mercurial命令时出现以下错误:
Could not find platform independent libraries
Consider setting $PYTHONHOME to[:<exec_prefix>]
ImportError: No module named site
执行whereis python得到多版本路径,设置错误的PYTHONHOME后仅剩余ImportError: No module named site,且yum重装Python失败。
解决步骤
1. 明确系统默认Python版本
CentOS 7默认依赖Python 2.7运行yum,先检查当前Python符号链接指向:
ls -l /usr/bin/python
正常应指向/usr/bin/python2.7,若指向错误可手动修正:
ln -sf /usr/bin/python2.7 /usr/bin/python
2. 正确配置PYTHONHOME与PYTHONPATH
PYTHONHOME需设置为Python的prefix目录(而非可执行文件路径),CentOS 7中Python的prefix为/usr。
- 临时生效(当前终端):
export PYTHONHOME=/usr export PYTHONPATH=/usr/lib/python2.7/site-packages:/usr/lib64/python2.7/site-packages
- 永久生效(所有终端):
编辑~/.bashrc或/etc/profile,添加上述两行,然后执行:
source ~/.bashrc
3. 修复yum工具
由于yum依赖Python 2.7,若Python 2环境损坏,可直接指定Python版本执行yum:
/usr/bin/python2.7 /usr/bin/yum install -y python2
这会重新安装Python 2.7的完整依赖包。
4. 恢复Mercurial功能
CentOS 7的Mercurial默认依赖Python 2,修复Python 2环境后,重新安装Mercurial:
yum install -y mercurial
若你是通过pip安装的Mercurial,需用Python 2的pip执行:
/usr/bin/python2.7 -m pip install --upgrade mercurial
5. 避免多版本Python冲突(可选)
若需使用Python 3,建议通过虚拟环境隔离,避免修改系统默认Python:
# 安装Python 3虚拟环境工具 yum install -y python36-virtualenv # 创建虚拟环境 virtualenv -p /usr/bin/python3.6 my_py3_env # 激活虚拟环境 source my_py3_env/bin/activate
在虚拟环境中使用Python 3和对应pip,不会影响系统默认Python及yum。
内容的提问来源于stack exchange,提问作者Donald M
相关产品推荐
相关产品推荐

