Linux下Python多版本环境安装
Python多版本环境安装
1 需求描述
在测试环境提供一台机器给部分开发同事使用,每个用户单独一个账户,都是普通用户。在开发过程中,不同的开发人员需要使用不同版本的Python,Centos7操作系统默认的Python2 版本为2.7.5, Python3的为Python3.4 ,一般无法满足用户的需求。故在每个用户在自己的/home目录下使用源码安装自己所需要的Python版本。
2 Python 多版本安装
使用源码安装之前,使用yum安装一些操作系统依赖包。
1 | # yum install -y nc screen lrzsz expect cmake make gcc gcc-c++ perl bison bc thread libaio libaio-devel zlib zlib-devel nc python python-devel cmake ncurses-devel scurses sysstat perl-ExtUtils-CBuilder perl-CPAN perl-Log-Dispatch perl-Config-Tiny perl-Parallel-ForkManager perl-Config IniFiles vim-enhanced ftp telnet wget tree iftop iotop fio bind-utils net-tools openssl openssl-devel libnl-3-devel libnl-3 libnl libnl-devel glib glibc-devel glib-devel pcre pcre-devel openssl openssl-devel dos2unix dstat iftop iotop gcc gcc-c++ make cmake automake autoconf libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel numactl-devel numactl ftp dstat wget make iftop iotop dstat bzip2-devel |
2.1 安装Python2.7.13
2.1.1 下载软件包
1 | $ wget https: //www .python.org /ftp/python/2 .7.13 /Python-2 .7.13.tgz |
2.1.2 解压安装Python2.7.13
1 2 3 4 5 | $ tar zxvf Python-2.7.13.tgz $ cd Python-2.7.13 $ . /configure --prefix= /home/mgx/python2 .7.13 --with-ssl -- enable -optimizations $ make –j4 $ make install |
2.1.3 配置个人环境变量
1 2 3 | $ vim ~/.bashrc # 加上这一行 PATH= /home/mgx/python2 .7.13 /bin :$PATH |
让环境变量生效
1 | $ source ~/.bashrc |
查看Python版本
1 | $ python –V |
升级pip
1 | $ pip install --upgrade pip |
2.2 安装Python 3.6.8
2.2.1 下载软件包
1 | $ wget https: //www .python.org /ftp/python/3 .6.8 /Python-3 .6.8.tgz |
2.2.2 解压安装
1 2 3 4 5 | $ tar zxvf Python-3.6.8.tgz $ cd Python-3.6.8 $ . /configure --prefix= /home/mgx/python3 .6.8 --with-ssl -- enable -optimizations $ make -j4 $ make install |
2.2.3 配置个人环境变量
1 2 3 | $ vim ~/.bashrc # 加上这一行 PATH= /home/mgx/python3 .6.8 /bin :$PATH |
让环境变量生效
1 | $ source ~/.bashrc |
查看Python版本
1 | $ python3 –V |
升级pip3
1 | $ pip3 install --upgrade pip |
3 Python虚拟环境
虽然可以通过上面的方式安装不同版本的Python,但是相对来说还是不够简便。virtualenv提供了一套“隔离”的Python运行环境,更方便于提供多版本Python应用开发环境。
3.1 安装
1 | $ pip3 install virtualenv |
用上述pip即可安装好Python虚拟环境。
3.2 使用
每个项目,都需要独立创建一个或者多个虚拟环境,假如现在需要创建一个项目(目录文件叫project):
1 2 | $ mkdir project $ cd project |
准备virtualenv, -p 指定python版本
1 | $ virtualenv -p python3 venv |
激活virtualenv
1 2 3 | $ source venv /bin/activate (venv) [mgx@gitlab66 project]$ (venv) [mgx@gitlab66 project]$ |
可以看到,进入了虚拟环境之后,有个(venv)的前缀。
1 2 3 4 5 6 | (venv) [mgx@gitlab66 project]$ pip list Package Version ---------- ------- pip 20.0.2 setuptools 46.1.3 wheel 0.34.2 |
可以看到,这个是一个全新的环境。专门针对于project这个项目。使用deactivate命令退出虚拟环境。
1 2 | (venv) [mgx@gitlab66 project]$ deactivate [mgx@gitlab66 project]$ |
在这里面安装的Python模块与操作系统的隔离,当开发完毕后,可以使用
1 2 3 4 5 6 7 8 | (venv) [mgx@gitlab66 project]$ pip install pymysql Collecting pymysql Downloading PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB) |████████████████████████████████| 47 kB 334 kB /s Installing collected packages: pymysql Successfully installed pymysql-0.9.3 (venv) [mgx@gitlab66 project]$ pip freeze > requirements.txt PyMySQL==0.9.3 |
导出相应的Python模块,在生产环境中安装。
不过现在生产环境中多用Docker,因此虚拟环境在生产环境也不怎么使用。
4 使用pip安装Python模块
4.1 pip安装
pip是一个用来安装和管理Python包的工具,操作系统一般都默认安装了pip,如果没有安装,可以使用以下方式进行安装。
1 2 3 4 5 | Centos yum -y install epel-release yum install python-pip pip install --upgrade pip |
默认pip会从pypi.douban.com下载软件包,有时候网络不好的情况下,下载速度巨慢,可以通过在下载命令中执行下载地址或者修改配置文件,从稳定的源站进行下载。
例如,从豆瓣的镜像源下载软件包
1 2 3 4 5 6 7 | pip install -i https: //pypi .douban.com /simple/ pymysql Looking in indexes: https: //pypi .douban.com /simple/ Collecting pymysql Downloading https: //pypi .doubanio.com /packages/ed/39/15045ae46f2a123019aa968dfcba0396c161c20f855f11dea6796bcaae95/PyMySQL-0 .9.3-py2.py3-none-any.whl (47 kB) |████████████████████████████████| 47 kB 2.3 MB /s Installing collected packages: pymysql Successfully installed pymysql-0.9.3 |
也可以直接配置修改配置文件~/.pip/pip.conf
1 2 3 4 5 6 7 8 | $ vim ~/.pip /pip .conf [global] timeout =6000 index-url =https: //pypi .douban.com /simple/ [ install ] use-mirrors = true mirrors =https: //pypi .douban.com /simple/ trusted-host =pypi.douban.com |
4.2 pip常用命令
4.2.1 常用命令说明
4.2.2 示例
- 查找软件包
1 | pip search pymysql |
- 安装软件包
1 | pip install pymysql |
- 安装特定版本软件包
1 | pip install pymysql==0.9.3 |
- 删除软件包
1 | pip uninstall pymysql |
- 查看已安装的软件包列表
1 | pip list |
- 导出系统中已经安装的软件包到requirements文件
1 | pip freeze > requirement.txt |
- 从requirements文件安装软件包
1 | pip install -r requirement.txt |
4.2.3 下载软件包到本地安装
有时候生产上的服务器无法访问外网,这个时候,可以在测试环境中下载好软件包,然后传到服务器上,通过本地安装的方式进行软件包安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | $ pip download flask Collecting flask Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB) |████████████████████████████████| 94 kB 296 kB /s Saved . /Flask-1 .1.2-py2.py3-none-any.whl Collecting Werkzeug>=0.15 Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB) |████████████████████████████████| 298 kB 390 kB /s Saved . /Werkzeug-1 .0.1-py2.py3-none-any.whl Collecting Jinja2>=2.10.1 Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB) |████████████████████████████████| 125 kB 437 kB /s Saved . /Jinja2-2 .11.2-py2.py3-none-any.whl Collecting itsdangerous>=0.24 Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB) Saved . /itsdangerous-1 .1.0-py2.py3-none-any.whl Collecting click>=5.1 Downloading click-7.1.1-py2.py3-none-any.whl (82 kB) |████████████████████████████████| 82 kB 427 kB /s Saved . /click-7 .1.1-py2.py3-none-any.whl Collecting MarkupSafe>=0.23 Downloading MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB) Saved . /MarkupSafe-1 .1.1-cp36-cp36m-manylinux1_x86_64.whl Successfully downloaded flask Werkzeug Jinja2 itsdangerous click MarkupSafe $ pip install --no-index -f file : ///home/mgx flask Looking in links: file : ///home/mgx Processing . /Flask-1 .1.2-py2.py3-none-any.whl Processing . /click-7 .1.1-py2.py3-none-any.whl Processing . /Werkzeug-1 .0.1-py2.py3-none-any.whl Processing . /Jinja2-2 .11.2-py2.py3-none-any.whl Processing . /itsdangerous-1 .1.0-py2.py3-none-any.whl Processing . /MarkupSafe-1 .1.1-cp36-cp36m-manylinux1_x86_64.whl Installing collected packages: click, Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.1 flask-1.1.2 itsdangerous-1.1.0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!