python版本管理工具pyenv

由于在日常办公电脑中或者服务器上都有 python 多版本同时使用需求,比如 python2 和 python3。使用 python版本管理工具 pyenv 或者 anaconda 就能够方便随意切换 python 版本。

一、pyenv

1、Linux

项目地址:https://github.com/pyenv/pyenv

1)安装依赖

1
2
3
4
5
6
7
8
#CentOS/Fedora 21 and below
yum install -y gcc make patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel

#Ubuntu/Debian/Mint
apt update
apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

更多 Linux 发行版系统安装依赖参考:https://github.com/pyenv/pyenv/wiki#suggested-build-environment

2)安装pyenv

1
2
3
4
5
6
7
#自动化安装方式(推荐,会同时安装pyenv和pyenv-doctor、pyenv-update、pyenv-virtualenv等插件)
curl https://pyenv.run | bash

##指定版本安装方式(仅会安装pyenv,不会自动安装pyenv-doctor、pyenv-update、pyenv-virtualenv等插件,如需插件要自行安装)
wget -O pyenv-2.3.17.tar.gz https://github.com/pyenv/pyenv/archive/refs/tags/v2.3.17.tar.gz
tar -zxvf pyenv-2.3.17.tar.gz
mv pyenv-2.3.17 ~/.pyenv

3)配置环境变量

1
2
3
4
5
6
7
8
9
10
11
12
#添加环境变量。cat后的>>表示追加,>则表示覆盖。<< 后的EOF用引号可以避免$赋值,如果希望赋值则不加引号
cat >> ~/.bashrc << 'EOF'

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
EOF

#使环境变量生效
source ~/.bashrc

4)安装python版本

1
2
3
4
5
6
7
8
#指定版本安装python
pyenv install 3.7.10
pyenv install 2.7.16
pyenv install 3.10.10
#设置当前全局python版本
pyenv global 3.7.10 #全局使用python3.7.10
#pyenv global 2.7.16 #全局使用python2.7.16
#pyenv global system #使用操作系统原本自带的python版本

提示:

  • 与 Windows 平台上的 pyenv-win 不同,pyenv-win 是二进制包安装,而 pyenv 则是对指定版本的 python 源码包进行编译安装,所以安装会比较久。
  • 经测试 Python 3.7.0 在 WSL Ubuntu 22.04 中会编译失败,暂不清楚原因。

5)常用命令

1
2
3
4
5
6
7
8
9
10
11
12
pyenv commands  查看pyenv命令
pyenv install --list #查看可安装的python版本
pyenv versions #查看已安装版本
pyenv version #查看当前使用的python版本
pyenv update #更新pyenv及其插件(依赖pyenv-update插件,参考:https://github.com/pyenv/pyenv/tree/master?tab=readme-ov-file#upgrading-with-installer-or-git-checkout,这里该命令和 Windows 版本不一样,并非更新本地python版本配置)
pyenv install -v 版本号 #指定版本安装python,-v 可省略
pyenv rehash #刷新python已安装列表
pyenv uninstall 版本号 #删除python
pyenv virtualenv 已有版本环境名名 新版本环境名 #按已有版创建新的python环境(调用virtualenv,python3 自带了virtualenv,py2要自行装)
pyenv global 版本号 #设置当前全局python版本
pyenv local 版本号 #设置当前目录局部python版本,以后进入目录就会自动切换到这个版本
pyenv local --unset #取消局部python版本设置,或者删除当前目录下的.python-version文件

6)pyenv-virtualenv 命令使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建虚拟环境(使用特定的Python版本创建虚拟环境)
pyenv virtualenv 3.7.10 env-name

#列出创建的所有虚拟环境
pyenv virtualenvs

# 激活虚拟环境
pyenv activate env-name

#退出虚拟环境,回到系统环境
pyenv deactivate

#删除虚拟环境
pyenv uninstall env-name # 或者删除其真实目录 rm -rf ~/.pyenv/versions/env-name

说明:pyenv-virtualenv 插件相比于 Python 默认的 Virtualenv,其能够集中管理虚拟环境,例如可以列出创建的所有虚拟环境,但 Virtualenv 不可以。

pyenv-virtualenv 插件使用参考:

7)卸载

1
2
3
4
#删除所有已编译的 Python 版本源码和相关日志(提示:Python 版本编译成功时会自动删除源码,但会保留日志,编译失败则不会删除源码)
rm -rf /tmp/python-build* -rf
#删除 pyenv(包括已安装的 Python 版本)
rm -rf ~/.pyenv

然后删除~/.bashrc中的环境变量配置即可

8)参考

2、windows

1)手动安装

(1)安装pyenv

如果没有安装过则可以下载源码压缩包解压到自定义安装目录,如:E:/Cache/pyenv/.pyenv

下载地址:https://github.com/pyenv-win/pyenv-win/archive/refs/tags/v3.1.1.zip

说明:如果本地已经有python环境也可以直接使用pip来安装,安装完成后再把原来python和其环境变量(如果有配置的话)删除掉即可。

1
>pip install pyenv-win --target E:/Cache/pyenv/.pyenv

(2)配置环境变量

先加环境变量 PYENVE:\Cache\pyenv\.pyenv\pyenv-win

然后再在 Path 中加入:

  • %PYENV%\bin
  • %PYENV%\shims

2)自动安装

打开 PowerShell 并执行如下命令:

1
2
3
4
5
6
7
8
#允许 PowerShell 执行脚本(需要管理员身份运行 PowerShell)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

#安装
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

#卸载
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1" -UNINSTALL

说明:

  • 自动安装默认安装目录为:C:\Users\%username%\.pyenv。如需自定义安装目录,需在执行脚本前,修改 install-pyenv-win.ps1 里的 $PyEnvDi 变量值(默认为:"${env:USERPROFILE}\.pyenv"),可改为如:E:\Cache\pyenv\.pyenv
  • 安装过程会自动添加所需的系统环境变量。

3)优化下载镜像

方式1:添加系统环境变量:PYTHON_BUILD_MIRROR_URL,可选值如下:

方式2:

pyenv-win/libexec/libs/pyenv-install-lib.vbs 中找到
If mirror = "" Then mirror = "https://www.python.org/ftp/python",然后将地址改成如下:

参考:https://github.com/pyenv-win/pyenv-win/issues/398

4)测试

1
2
3
4
5
6
pyenv --version		#PowerShell执行pyenv失败可以通过管理员方式PowerShell执行命令解决:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
pyenv install 3.7.10
pyenv install 2.7.16
pyenv install 3.10.10
pyenv global 3.7.10
python3 --version #这一步可能会启动Microsoft Store。这是由于环境变量产生了问题。两种方法解决:1、菜单搜索【管理应用执行别名】关闭两个按钮【应用安装程序】;2、可以同时将系统和用户的环境变量中的%USERPROFILE%\AppData\Local\Microsoft\WindowsApps删除掉

💁‍♂环境变量配置好后需要重新打开终端。

5)常用命令

1
2
3
4
5
6
7
8
9
10
11
12
pyenv commands  查看pyenv命令
pyenv install --list #查看可安装的python版本
pyenv versions #查看已安装版本
pyenv version #查看当前使用的python版本
pyenv update #更新本地python版本配置(更新.versions_cache.xml文件,该文件记录版本和其对应下载地址)
pyenv install -v 版本号 #指定版本安装python,-v 可省略
pyenv rehash #刷新python已安装列表
pyenv uninstall 版本号 #删除python
pyenv virtualenv 已有版本环境名名 新版本环境名 #按已有版创建新的python环境(调用virtualenv,python3 自带了virtualenv,py2要自行装)
pyenv global 版本号 #设置当前全局python版本
pyenv local 版本号 #设置当前目录局部python版本,以后进入目录就会自动切换到这个版本
pyenv local --unset #取消局部python版本设置,或者删除当前目录下的.python-version文件

6)安装vitualenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装
python -m pip install --user virtualenv
# 在powershell中,这样安装虚拟环境会出错
# virtualenv venv
# 正确的安装虚拟环境方式
python -m virtualenv venv
#或者执行 pyenv exec virtualenv venv #这种需要全局安装的方式python -m pip install virtualenv

# 激活虚拟环境
.\venv\Scripts\activate
# 查看当前虚拟环境已安装的package
pip list
# 退出虚拟环境
deactivate

7)卸载

删除掉E:/Cache/pyenv/.pyenv目录,删除对应环境变量即可。

参考:
https://blog.csdn.net/weixin_45027467/article/details/123137457

https://www.bilibili.com/read/cv12982089

https://blog.csdn.net/weixin_43982238/article/details/108289616

二、anaconda

1、centos7

1)安装

1
2
3
4
#下载安装脚本
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh
#安装(不断回车或yes即可)
sh Anaconda3-2021.11-Linux-x86_64.sh

2)配置

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
#添加环境变量。cat后的>>表示追加,>则表示覆盖。<< 后的EOF用引号可以避免$赋值,如果希望赋值则不加引号
cat >> ~/.bashrc << 'EOF'

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/root/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/root/anaconda3/etc/profile.d/conda.sh" ]; then
. "/root/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/root/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
EOF

#使环境变量生效
source ~/.bashrc

#测试安装配置是否成功
conda -v

#安装好anaconda后,默认系统全局就会自动默认使用anaconda自带的python版本,如果希望保持原来系统版本可如下设置
conda config --set auto_activate_base false

3)使用

1
2
3
4
5
6
7
8
9
10
#创建一个项目的虚拟环境,并指定虚拟环境名称为py38,使用python3.8版本
conda create -n py38 python=3.8
#查看当前创建的所有虚拟环境
conda env list
#激活当前环境为py38,如此在当前登录会话过程全局就会使用用python3.8版本
conda activate py38
# 退出当前虚拟环境
conda deactivate
#删除一个项目的虚拟环境
conda remove -n py38 *--all*

2、windows

1)安装

下载安装包:https://www.anaconda.com/download/#windows

安装过程一直下一步即可。

2)配置

Path中加入如下环境变量(假设anaconda安装到D:\Development\Anaconda3):

1
2
3
4
5
D:\Development\Anaconda3
D:\Development\Anaconda3\condabin
D:\Development\Anaconda3\Scripts
D:\Development\Anaconda3\Library\bin
D:\Development\Anaconda3\Library\mingw-w64

💁‍♂官方建议使用Anaconda Prompt 终端执行conda或者python等命令。

3)使用

安装后会有Anaconda Prompt (Anaconda3)终端,打开执行conda或者python等命令即可。

参考



----------- 本文结束 -----------




如果你觉得我的文章对你有帮助,你可以打赏我哦~
0%