银河麒麟Server V10 SP1系统下Python2环境配置:从setuptools到pip2的完整指南
1. 为什么还需要Python2环境?
最近接手一个老项目,客户系统跑在银河麒麟Server V10 SP1上,项目代码还是用Python2写的。说实话,现在Python2官方早就停止维护了,但现实工作中难免会遇到这种"古董级"项目需要维护。今天就把我在麒麟系统上配置Python2环境的完整过程分享给大家,从setuptools到pip2一步到位。
你可能要问:为什么不直接升级到Python3?理想很丰满,但现实是很多老系统因为兼容性问题根本没法升级。比如银行、政府单位的某些核心系统,牵一发而动全身。这种情况下,我们只能老老实实把Python2环境配好。
2. 准备工作:检查系统环境
2.1 确认系统版本
首先登录你的银河麒麟Server V10 SP1系统,打开终端输入:
cat /etc/kylin-release这个命令会输出类似这样的信息:
Kylin Linux Advanced Server release V10 (SP1)我遇到过一些朋友把V10和V10 SP1搞混了,其实SP1是重要升级版本,软件仓库和依赖关系都有变化,一定要确认清楚。
2.2 检查Python2是否安装
输入以下命令检查Python2版本:
python --version如果系统已经预装Python2,通常会显示:
Python 2.7.5如果没有安装,可以用yum安装:
sudo yum install python注意:银河麒麟的软件源可能和标准CentOS不同,如果遇到依赖问题,可能需要联系系统管理员获取内部软件源配置。
3. 安装setuptools:Python2的基石
3.1 为什么需要setuptools?
setuptools是Python的包管理工具,相当于盖房子要先打地基。没有它,后续安装pip2会遇到各种奇怪问题。我刚开始就踩过这个坑,直接装pip2报了一堆依赖错误。
3.2 下载setuptools
官方推荐版本是36.6.0,这个版本在麒麟系统上最稳定。用wget下载:
wget https://pypi.python.org/packages/45/29/8814bf414e7cd1031e1a3c8a4169218376e284ea2553cc0822a6ea1c2d78/setuptools-36.6.0.zip下载完成后记得验证MD5:
md5sum setuptools-36.6.0.zip应该显示:
74663b15117d9a2cc5295d76011e6fd1如果MD5对不上,可能是下载过程中文件损坏,需要重新下载。
3.3 安装setuptools
解压并安装:
unzip setuptools-36.6.0.zip cd setuptools-36.6.0 python setup.py install安装过程中可能会提示缺少某些依赖,常见的是zlib-devel。解决方法:
sudo yum install zlib-devel安装完成后验证:
python -c "import setuptools; print(setuptools.__version__)"应该输出:
36.6.04. 安装pip2:Python2的包管理利器
4.1 为什么需要pip2?
有了pip2,安装Python2的第三方库就方便多了。不然就得手动下载、解压、运行setup.py,效率太低。
4.2 下载pip2
推荐使用9.0.1版本:
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz同样要验证MD5:
md5sum pip-9.0.1.tar.gz正确结果:
35f01da33009719497f01a4ba69d63c94.3 安装pip2
解压并安装:
tar -zxvf pip-9.0.1.tar.gz cd pip-9.0.1 python setup.py install安装完成后检查版本:
pip --version应该显示:
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)5. 常见问题排查
5.1 安装时报SSL错误
如果遇到SSL相关错误,比如:
Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate这是因为系统证书问题,临时解决方案:
pip install --trusted-host pypi.python.org package_name永久解决方案是更新系统CA证书:
sudo yum install ca-certificates5.2 pip2命令找不到
安装完pip2后输入pip2提示命令不存在,这是因为银河麒麟默认把pip2安装到了/usr/local/bin下。解决方法:
export PATH=$PATH:/usr/local/bin或者创建符号链接:
sudo ln -s /usr/local/bin/pip /usr/bin/pip25.3 安装第三方库报错
有些库已经不再支持Python2,比如新版的requests。解决方法是指定老版本:
pip install requests==2.27.16. 安全注意事项
虽然我们不得不使用Python2,但安全措施一定要做好:
- 限制Python2环境的网络访问,只允许访问必要的内网资源
- 定期检查第三方库的安全公告,及时更新到最后一个支持Python2的安全版本
- 考虑使用虚拟环境隔离Python2项目:
pip install virtualenv virtualenv -p python2 myenv source myenv/bin/activate- 重要项目建议逐步迁移到Python3,长期来看这是唯一可持续的方案
7. 实际项目中的经验分享
最近部署的一个老项目就遇到了坑。客户系统是银河麒麟V10 SP1,项目用的是Django 1.11(最后一个支持Python2的Django版本)。安装过程发现几个问题:
- MySQL-python库直接pip安装失败,需要先安装开发包:
sudo yum install mysql-devel- 某些老库的下载链接失效了,需要手动下载whl文件安装:
pip install package_name.whl- 系统自带的sqlite3版本太老,导致Django的migrate命令报错。解决方法:
sudo yum install sqlite-devel pip install pysqlite建议大家在麒麟系统上部署Python2项目时,预留足够的时间处理这类兼容性问题。最好先在测试环境完整走一遍流程,确认所有依赖都能正常安装。
