[ Content contribution] 使用pyenv管理和安装各种python版本
Tofloor
default avatar
neko
deepin
Ecological co-builder
Resources Team Moderator
2024-01-18 15:57
Author

为什么使用pyenv:

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

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

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

image.png

sudo apt install tk-dev libreadline-dev libbz2-dev libsqlite3-dev liblzma-dev libssl-dev libffi-dev zlib1g-dev #安装开发库,编译需要,否则可能报错 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
阿尼樱奈奈
deepin
2024-01-19 00:04
#1
like
Reply View the author
deepin-superuser
deepin
2024-01-19 00:22
#2

python 有 pyenv

node 有 nvm

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

Reply View the author
翻过山峰看见云
deepin
2024-01-19 01: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
deepin
Ecological co-builder
Resources Team Moderator
2024-01-19 01:43
#4
翻过山峰看见云

jdk可以使用sdkman

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

这个看起来很不错诶

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

哥哥写的太好了

Reply View the author
噗噗
deepin
2024-07-13 01:29
#6

deepin 23 RC2 pyenv install 3.12

安装python 3.12报错了

Python/fileutils.c: In function ‘_Py_closerange’: Python/fileutils.c:2911:9: error: implicit declaration of function ‘close_range’ [-Werror=implicit-function-declaration] 2911 | if (close_range(first, last, 0) == 0) { | ^~~~~~~~~~~ gcc -c -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/home/nagisa/.pyenv/versions/3.12.4/include -I/home/nagisa/.pyenv/versions/3.12.4/include -fPIC -DPy_BUILD_CORE -o Python/suggestions.o Python/suggestions.c cc1: some warnings being treated as errors make: *** [Makefile:2739:Python/fileutils.o] 错误 1 make: *** 正在等待未完成的任务....

看样子是close_range函数没有实现,又遇到这个问题的吗?

如何解决?

Reply View the author
neko
deepin
Ecological co-builder
Resources Team Moderator
2024-07-13 11:46
#7
噗噗

deepin 23 RC2 pyenv install 3.12

安装python 3.12报错了

Python/fileutils.c: In function ‘_Py_closerange’: Python/fileutils.c:2911:9: error: implicit declaration of function ‘close_range’ [-Werror=implicit-function-declaration] 2911 | if (close_range(first, last, 0) == 0) { | ^~~~~~~~~~~ gcc -c -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I. -I./Include -I/home/nagisa/.pyenv/versions/3.12.4/include -I/home/nagisa/.pyenv/versions/3.12.4/include -fPIC -DPy_BUILD_CORE -o Python/suggestions.o Python/suggestions.c cc1: some warnings being treated as errors make: *** [Makefile:2739:Python/fileutils.o] 错误 1 make: *** 正在等待未完成的任务....

看样子是close_range函数没有实现,又遇到这个问题的吗?

如何解决?

这个好像是内核的问题,你试试降级内核

Reply View the author
噗噗
deepin
2024-07-14 09:22
#8
neko

这个好像是内核的问题,你试试降级内核

我全新安装的23 RC2,这可咋降级

Reply View the author
neko
deepin
Ecological co-builder
Resources Team Moderator
2024-07-14 11:41
#9
噗噗

我全新安装的23 RC2,这可咋降级

apt list |grep linux-headers查询所有版本

,然后复制包名安装

sudo apt install linux-headers-xxxxx还有个linux-image-xxxxx这两个包版本号要一致

Reply View the author
噗噗
deepin
2024-07-14 15:34
#10
neko

apt list |grep linux-headers查询所有版本

,然后复制包名安装

sudo apt install linux-headers-xxxxx还有个linux-image-xxxxx这两个包版本号要一致

感谢!

我尝试一下 linux-image-6.1.32-amd64-desktop-hwe 这个版本

Reply View the author
噗噗
deepin
2024-07-14 16:14
#11
噗噗

感谢!

我尝试一下 linux-image-6.1.32-amd64-desktop-hwe 这个版本

看来这个版本的内核还是不行, :(

image.png

Reply View the author
neko
deepin
Ecological co-builder
Resources Team Moderator
2024-07-14 16:17
#12
噗噗

看来这个版本的内核还是不行, :(

image.png

不行的话换anaconda之类的虚拟环境吧

Reply View the author
噗噗
deepin
2024-07-16 15:12
#13
neko

不行的话换anaconda之类的虚拟环境吧

不用了,现在我用venv了。

给大家参考:

python -m venv ~/VENV vim ~/.bashrc # 添加自动触发参数 pyvenv () { source ~/VENV/bin/activate } # 下次要用时: pyvenv # 即可激活全局venv
Reply View the author
流浪的加菲
deepin
2024-07-19 01:56
#14

好家伙,这是用了百度的AI搜索的教程吧,哈哈

image.png

Reply View the author
neko
deepin
Ecological co-builder
Resources Team Moderator
2024-07-19 02:03
#15
流浪的加菲

好家伙,这是用了百度的AI搜索的教程吧,哈哈

image.png

pyenv的github地址里面就有joy

Reply View the author
蓝鲸
deepin
2024-08-26 08:46
#16
噗噗

不用了,现在我用venv了。

给大家参考:

python -m venv ~/VENV vim ~/.bashrc # 添加自动触发参数 pyvenv () { source ~/VENV/bin/activate } # 下次要用时: pyvenv # 即可激活全局venv

个人认为这个解决办法更灵活。like

Reply View the author
New Thread

Popular Events

More
国际排名
WHLUG