[Share Experiences] 如何在Linux deepin上进行Python的多版本安装和管理
Tofloor
poster avatar
流浪的加菲
deepin
2024-07-19 11:05
Author

昨晚上本来准备玩下之前搭建好的 Stable Diffusion ,运行直接报错了,作为一个小白,研究了下终端内的信息,貌似是Python版本不对了。

Stable Diffusion 依赖的python环境是3.10,现在系统预装的python升级到3.12.2了,日常还是要多关注论坛的deepin更新公告:2024年07月12日deepin V23 RC 内测更新公告

image.png

那这个时候就有个问题了,系统预装的Python是不能乱动的,毕竟算是比较底层的依赖了,谁知道改了版本会不会导致什么软件不能用了。这个时候就需要自己切换python的版本了,当前使用的软件需要什么python版本就切换成什么版本,关于python版本管理最好用的工具应该是 pyenv了吧。

image.png

安装 pyenv

咋也不懂,咋就百度搜索了下,没想到现在百度的AI还挺好用的,当然大家也可以使用系统自带的UOS AI,也是不错的,UOS AI目前可以免费体验,好像目前默认的大模型就是百度千帆。

image.png

这里要吐槽下,很多教程上来就是 git pyenv到本地,不管是 curl https://pyenv.run | bash还是 git clone https://github.com/pyenv/pyenv.git ~/.pyenv都提示“GnuTLS recv error (-110): TLS 链接非正常地终止了”报错:

image.png

咋也不懂,就去百度了下,别说百度AI的教程还真就成了:

image.png

1、安装依赖项:

sudo apt-get update
sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils \
tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

image.png

2、安装pyenv

curl https://pyenv.run | bash

这个时候再去执行上面的命令,它就跑的通,没有再报“GnuTLS recv error (-110): TLS 链接非正常地终止了”这个错误了
image.png

3、将pyenv添加到您的bash shell,在 ~/.bashrc 文件中:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

image.png

4、添加 pyenv init 到 ~/.bashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

image.png

5、重新启动shell使配置生效

exec "$SHELL"

6、验证安装是否成功

pyenv --version

image.png

以上步骤将会安装pyenv并将其添加到您的shell配置中,使得您可以管理多个Python版本。

python版本安装和管理

1、安装python版本

pyenv install x.x

例如,我需要安装的python版本是3.10.14
image.png

检查python版本是否安装成功(查看当前python版本)

python --version

image.png

2、管理python版本

列出当前系统安装的python版本 pyenv install --list

image.png

设置需要的python版本为系统全局生效 pyenv global x.x

如下图,我在3.10.14和3.12.2之间反复横跳~

image.png

这里我其实有个疑问,为什么它提示我系统没有3.12.2版本,还要我重新安装了一次,系统不是预装了吗,之前也查看过版本信息,确实是3.12.2,但是安装pyenv后就说没有安装这个版本,挺奇怪的。

全局设置加虚拟环境设置

因为系统默认python版本是3.12.2,肯定是有它的道理,我玩SD需要的环境版本是3.10,所以为了系统系统应用不出问题,我又能正常的玩SD,就只能搞个虚拟环境了,也就是之前venv咯,Python3.3版本之后好像就自带这个了,说下思路:

首先,把系统全局Python环境设置为 3.10.14

image.png

然后,在虚拟环境中克隆一套 3.10.14 的python环境 python3.10 -m venv venv

image.png

最后,我们再将系统全部默认python环境重新设置为系统镜像默认的3.12.2

image.png

我们进入虚拟环境,激活并验证下 source venv/bin/activate 可以看到现在的环境路径前有个“(venv)”

image.png

退出虚拟环境 deactivate

Reply Favorite View the author
All Replies
流浪的加菲
deepin
2024-07-19 11:07
#1

小白一枚,咱应该没有误人子弟吧doubt

Reply View the author
Lwh2008-Equinox
deepin
2024-07-19 11:15
#2

pyenv是类似于nvm的东西吗?

Reply View the author
流浪的加菲
deepin
2024-07-19 12:11
#3
Lwh2008-Equinox

pyenv是类似于nvm的东西吗?

不知道呀,我是在网上搜怎么安装多个版本python,看到一些教程都是写的pyenv,就研究了下这个,主要是用来管理Python版本的,但是如果是数据科学和‌机器学习,貌似用Anaconda会更强大、更合适些

Reply View the author
Lwh2008-Equinox
deepin
2024-07-19 12:53
#4
流浪的加菲

不知道呀,我是在网上搜怎么安装多个版本python,看到一些教程都是写的pyenv,就研究了下这个,主要是用来管理Python版本的,但是如果是数据科学和‌机器学习,貌似用Anaconda会更强大、更合适些

emmm,看来我说的不够具体。。。

我的意思原本想的只是一个类比。。。

nvm是nodejs的版本管理器,我只是比较好奇pyenv是不是算是Python版本管理器joy

Reply View the author
流浪的加菲
deepin
2024-07-19 13:26
#5

仿佛又重新安装了一遍所有环境😂

image.png

Reply View the author
q77190858
deepin
2024-07-19 13:56
#6

可以用conda

Reply View the author
fallingstar-ten
deepin
2024-07-19 14:54
#7

用miniconda

Reply View the author
翻过山峰看见云
deepin
2024-07-19 15:47
#8

另外推荐下version-manager和vfox这两个软件,不仅能管理不同版本python,同时还能管理jdk,nodejs等等很多软件的版本

Reply View the author
昵称111
deepin
2024-07-19 18:29
#9

感谢分享

Reply View the author
阿白
deepin
2024-07-20 01:17
#10
q77190858

可以用conda

有理,反正我一下用conda很方便

Reply View the author