不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2021-10-11 02:09:45  修改时间:2025-07-21 17:32:51  分类:06.Linux软件安装  编辑

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

CentOS7升级Git至最新的v2.x版本

(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