[ Content contribution] 使用pyenv管理和安装各种python版本
Tofloor
poster avatar
neko
Moderator
2024-01-18 23:57
Author

为什么使用pyenv:

1、看到很多linux新手想要修改或升级系统的python,这是非常非常非常不建议的高风险操作。python作为linux系统里的基础组件在不充分了解linux系统的情况下替换或升级很容易出现依赖python的各种系统组件出错进而导致整个系统出问题,尤其是新手很容易犯这个错误。正确的做法应该是系统的python版本交给系统自己升级,我们使用python虚拟环境。

2、pyenv可以很方便的安装和管理各种python版本
比如:

pyenv global [版本] # 很方便切换安装的各种Python版本

image.png

pyenv install [版本] #安装指定版本的Python

image.png

里面还有很多功能,这里不过多赘述,现在开始安装pyenv。

安装Pyenv

# 下载代码
git clone https://github.com/pyenv/pyenv.git ~/.pyenv 

# 添加bash共享库加速(属于可选操作,不执行也可以)
cd ~/.pyenv && src/configure && make -C src

# 配置环境变量到.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 配置国内Python镜像站,用于加速下载Python源代码(属于可选操作,不执行也可以)
echo 'export PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1' >> ~/.bashrc
echo 'export PYTHON_BUILD_MIRROR_URL="https://registry.npmmirror.com/-/binary/python/"' >> ~/.bashrc


# 使用source立即在当前终端生效,或重新打开一个终端自动生效
source ~/.bashrc 

# 现在试试执行pyenv命令
pyenv --help

现在自己尝试安装Python吧!

PS:

在Python的编译安装过程中,可能会出现一些报错提示缺少某些库,这个时候就需要通过apt命令安装对应的开发库,安装好库后需要重新编译安装Python才能生效,比如:

缺少lzma开发库
image.png

缺少openssl开发库image.png

# 安装提示缺少的开发库,一般都是以"lib"开头"-dev"结尾
sudo apt install tk-dev libreadline-dev libbz2-dev libsqlite3-dev liblzma-dev libssl-dev libffi-dev

#卸载已经安装的
pyenv uninstall 3.12.1 

#重新编译安装 
pyenv install 3.12.1
Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2024-01-19 08:04
#1
like
Reply View the author
deepin-superuser
deepin
2024-01-19 08:22
#2

python 有 pyenv

node 有 nvm

java 啥时候才有一个方便的版本管理工具

Reply View the author
翻过山峰看见云
deepin
2024-01-19 09:39
#3
deepin-superuser

python 有 pyenv

node 有 nvm

java 啥时候才有一个方便的版本管理工具

jdk可以使用sdkman

另外最近发现一个versionfox:https://github.com/version-fox/vfox,同时支持常见的node,python,java版本管理

Reply View the author
neko
Moderator
2024-01-19 09:43
#4
翻过山峰看见云

jdk可以使用sdkman

另外最近发现一个versionfox:https://github.com/version-fox/vfox,同时支持常见的node,python,java版本管理

这个看起来很不错诶

Reply View the author
Future
deepin
2024-01-30 23:31
#5

哥哥写的太好了

Reply View the author