python3.13编译安装

进入python官网下载对应的安装包。

选择tgz版本,右键复制链接,然后wget [链接]

1
wget https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tgz

解压并进入文件夹:

1
2
tar -zvxf Python-3.13.0.tgz
cd Python-3.13.0

可能会遇到sqlite和openssl的问题,所以这里先未雨绸缪一下:

1
yum -y install sqlite-devel # ubuntu请自行切换成apt-get
1
vim Modules/Setup

找到ssl的相关配置,如下所示:

修改成这样:

其实就是直接加了两行代码:

1
2
_ssl _ssl.c -I/usr/include/openssl -L/usr/local/lib -lssl -lcrypto
_hashlib _hashopenssl.c -I/usr/include/openssl -L/usr/local/lib -lcrypto

这里-I后面加的是你的openssl头文件路径,-L后面加的是库文件路径,需要替换成你自己的,openssl安装可参考此教程

esc + :wq 保存退出,然后进行编译,这里的`--enable-optimizations`可以不加,是性能优化用的;`--with-openssl=`后面是你的openssl安装位置;`-j2`指的是2个进程同时编译,一般你有几个核心就可以同时编译几个,我这里是一台阿里云2c1g的服务器,所以`-j2`。
1
2
3
./configure --enable-optimizations --with-openssl=/usr/local/bin/openssl
make -j2
make install

如果有报错的话一般是依赖没有装全,直接把报错复制给GPT,它会告诉你需要安装哪些依赖,都比较简单,这里就不赘述了。

检测是否安装成功注意是python3不是python

1
2
python3 -V
pip3 -V

python版本管理

使用alternatives进行版本管理,其实本质上就是进行了软链接。首先检查一下python3的位置:

1
which python3

将它和/usr/bin/python3进行软链接:

1
2
3
rm -rf /usr/bin/python3
ln -s /usr/bin/python3 /usr/local/bin/python3 # 这边第二个路径写你的python位置
ll /usr/local/bin/python3

如下图所示即为成功:

然后配置开始配置alternatives:

1
alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1

这边--install后面有四个参数:

1./usr/bin/python3不用动。

2.python3是命令的名字。

3./usr/local/bin/python3.10是你的python可执行文件的真路径,一般来说就是带具体版本号的,和之前which python3在同一个路径下。

4.1指优先级,不要遗漏了。

可以如法炮制多个python版本,指定不同的优先级。

然后使用alternatives --config python3来切换python版本:

这里+所在的位置就是当前的版本,输入数字切换对应版本,比如我这边切换到了python3.6,可以验证一下是否切换成功:

1
python -V

alternatives的运行机制

如果你对原理感兴趣的话,不妨使用ll命令追踪一下,看看到底发生了什么:

我们可以发现,其实它就是套了一层/etc/alternatives/python3,通过修改它指向的软链接位置,实现不同版本的切换。原理虽然简单,但是却十分实用~