CentOS7的Python包管理(1) 卸载Python3
CentOS7的Python包管理(2) pip的删除及安装(配置国内Python包镜像)
CentOS7的Python包管理(3) 安装Python2和Python3
CentOS7的Python包管理(4) 安装pyenv(Python多版本管理)
CentOS7的Python包管理(5) 安装virtualenv、virtualenvwrapper(Python虚拟环境管理)
通过以上文章的学习,终于知道如何管理Python多版本和依赖包的隔离问题,下面记录一下自己在CentOS7环境下管理Python环境的笔记:
一、系统(自带)环境
(1) CentOS7.9,Python 2.7.5,Git 1.8.3.1
1 2 3 4 5 6 | [root@CentOS7 - 1 ~] # cat /etc/redhat-release CentOS Linux release 7.9 . 2009 (Core) [root@CentOS7 - 1 ~] # python -V Python 2.7 . 5 [root@CentOS7 - 1 ~] # git version git version 1.8 . 3.1 |
(2) 阿里云主机,除了“系统盘”外,还单独购买了1块“数据盘”,挂载到目录 /alidata
规划把相关软件安装到目录 /alidata/server/
二、安装pyenv
# 安装依赖库
1 2 | [root@CentOS7-1 ~] # yum -y groupinstall "Development tools" [root@CentOS7-1 ~] # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel |
# 安装 pyenv 到目录 /alidata/server/python/pyenv
1 2 3 4 5 6 7 8 9 | [root@CentOS7-1 ~] # mkdir -pv /alidata/server/python mkdir : 已创建目录 "/alidata/server/python" [root@CentOS7-1 ~] # git clone git://github.com/pyenv/pyenv.git /alidata/server/python/pyenv 正克隆到 '/alidata/server/python/pyenv' ... remote: Enumerating objects: 20489, done . remote: Counting objects: 100% (1513 /1513 ), done . remote: Compressing objects: 100% (607 /607 ), done . 接收对象中: 25% (5123 /20489 ), 1.32 MiB | 122.00 KiB /s |
# 设置环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@CentOS7-1 ~] # sed -Ei -e '/^([^#]|$)/ {a \ export PYENV_ROOT= "/alidata/server/python/pyenv" a \ export PATH= "$PYENV_ROOT/bin:$PATH" a \ ' -e ' :a ' -e ' $!{n;ba};}' ~/.bash_profile echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile echo 'export PYENV_ROOT="/alidata/server/python/pyenv"' >> ~/.profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init --path)"' >> ~/.profile echo 'eval "$(pyenv init -)"' >> ~/.bashrc |
(1)修改后的 ~/.bash_profile
文件内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [root@CentOS7-1 ~] # vim ~/.bash_profile # .bash_profile export PYENV_ROOT= "/alidata/server/python/pyenv" export PATH= "$PYENV_ROOT/bin:$PATH" # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME /bin export PATH eval "$(pyenv init --path)" |
(2)修改后的 ~/.profile
文件内容为:
1 2 3 4 | [root@CentOS7-1 ~] # vim ~/.profile export PYENV_ROOT= "/alidata/server/python/pyenv" export PATH= "$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" |
(3)修改后的 ~/.bashrc
文件内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@CentOS7-1 ~] # vim ~/.bashrc # .bashrc # User specific aliases and functions alias rm = 'rm -i' alias cp = 'cp -i' alias mv = 'mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi eval "$(pyenv init -)" |
# 然后 source 一下环境
1 2 3 | [root@CentOS7-1 ~] # source ~/.bash_profile [root@CentOS7-1 ~] # source ~/.profile [root@CentOS7-1 ~] # source ~/.bashrc |
附:新安装的CentOS7环境变量备份:~/.bash_profile,~/.profile,~/.bashrc
# 使用pyenv预安装 Python 2.7.18 、3.9.10 这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 | [root@CentOS7-1 ~] # pyenv install 2.7.18 Downloading Python-2.7.18. tar .xz... -> https: //www .python.org /ftp/python/2 .7.18 /Python-2 .7.18. tar .xz Installing Python-2.7.18... patching file configure patching file configure.ac patching file setup.py patching file Mac /Tools/pythonw .c patching file setup.py patching file Doc /library/ctypes .rst patching file Lib /test/test_str .py patching file Lib /test/test_unicode .py patching file Modules /_ctypes/_ctypes .c patching file Modules /_ctypes/callproc .c patching file Modules /_ctypes/ctypes .h patching file Modules /_ctypes/callproc .c patching file setup.py patching file Mac /Modules/qt/setup .py patching file setup.py Installed Python-2.7.18 to /root/ .pyenv /versions/2 .7.18 [root@CentOS7-1 ~] # pyenv install 3.9.10 Downloading Python-3.9.10. tar .xz... -> https: //www .python.org /ftp/python/3 .9.10 /Python-3 .9.10. tar .xz Installing Python-3.9.10... Installed Python-3.9.10 to /root/ .pyenv /versions/3 .9.10 |
注意:安装慢的解决办法
1 | mkdir -p /alidata/server/python/pyenv/cache |
上传安装包(Python-3.9.10.tar.xz)到此目录,再执行:pyenv install 3.9.10
# 切换至 python 3.9.10
1 | [root@CentOS7-1 ~] # pyenv global 3.9.10 |
# 设置pip为国内镜像网站
1 | pip config set global.index-url https: //pypi .tuna.tsinghua.edu.cn /simple |
三、安装virtualenv、virtualenvwrapper
# 切换至 python 3.9.10
1 | [root@CentOS7-1 ~] # pyenv global 3.9.10 |
# 安装 virtualenv、virtualenvwrapper
1 2 3 4 | [root@CentOS7-1 ~] # python -V Python 3.9.10 [root@CentOS7-1 ~] # pip install virtualenv [root@CentOS7-1 ~] # pip install virtualenvwrapper |
# 配置 virtualenvwrapper
此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在Python安装目录的bin目录下(如:/root/.pyenv/versions/3.9.10/bin/virtualenvwrapper.sh
),实际上你需要运行virtualenvwrapper.sh
文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。
(1) 创建目录用来存放虚拟环境
1 | mkdir -pv /alidata/server/python/virtualenvs |
(2) 在文件 ~/.bashrc 中,追加如下内容:
1 2 3 4 5 | # 设置virtualenvwrapper的Python解释器为3.9.10 VIRTUALENVWRAPPER_PYTHON= /alidata/server/python/pyenv/versions/3 .9.10 /bin/python # 设置virtualenvwrapper的虚拟环境(父)目录 export WORKON_HOME= /alidata/server/python/virtualenvs source /alidata/server/python/pyenv/versions/3 .9.10 /bin/virtualenvwrapper .sh |
(3) 重新加载配置文件
1 | source ~/.bashrc |
四、使用virtualenvwrapper
此时virtualenvwrapper就可以使用了,virtualenvwrapper的基本使用方式:
1.列出虚拟环境列表
1 2 3 | [root@CentOS7-1 ~] workon # 或者 [root@CentOS7-1 ~] lsvirtualenv |
2.新建虚拟环境
1 | [root@CentOS7-1 ~] mkvirtualenv [虚拟环境名称] |
注意:还可以指定Python版本号
1 | [root@CentOS7-1 ~] mkvirtualenv [虚拟环境名称] -p /alidata/server/python/pyenv/versions/2 .7.18 /bin/python |
1 2 | [root@CentOS7-1 ~] mkvirtualenv env_2.7 -p /alidata/server/python/pyenv/versions/2 .7.18 /bin/python [root@CentOS7-1 ~] mkvirtualenv env_3.9 -p /alidata/server/python/pyenv/versions/3 .9.10 /bin/python |
3.启动/切换 虚拟环境
1 | [root@CentOS7-1 ~] workon [虚拟环境名称] |
4.删除虚拟环境
1 | [root@CentOS7-1 ~] rmvirtualenv [虚拟环境名称] |
5.离开虚拟环境,和virutalenv一样的命令
1 | deactivate |