编译安装Python3总结

Last Updated: 2023-09-30 09:27:03 Saturday

-- TOC --

几乎所有Linux发行版本都自带Python3,但编译安装有的时候还是必须的。

安装依赖和gcc

$ # CentOS
$ sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel expat-devel gdbm-devel xz-devel db4-devel libpcap-devel
$ # Ubuntu
$ sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libbz2-dev zlib1g-dev libffi-dev liblzma-dev libexpat1-dev
$ 
$ sudo yum install gcc  # install gcc in centos
$ sudo apt install gcc  # install gcc in ubuntu
$ which gcc  # check if gcc is there
$ gcc --version  # check gcc version

下载源码

配合和编译

$ cd Python-3.7.3
$ ./configure --prefix=/usr/local/python-3.7 --enable-optimizations
$ make && sudo make install

按需创建符号链接

用ldd命令查看python3程序依赖的动态链接库。不知道为什么,用ldd查看手动编译的python二进制文件,看到的.so文件比用ldd查看系统自带的python文件,.so文件少两个?不一致?

Linux系统下编译安装的特别注意事项

特别是Ubuntu系统!

尽量不要修改原系统的/usr/bin/python3这个符号链接,新的python版本,带上小版本好,比如/usr/bin/python3.8,保持系统原来的python3不变!(我现在认为,这也许才是正确的在Linux系统中安装自己编译的python的好方法,这样可以实现更多版本的并存)

如果修改了源Ubuntu系统的/usr/bin/python3这个符号链接,在后续使用系统的过程中,可能会出现各种莫名其妙的问题。比如lsb_release执行失败,terminial窗口打不开,ufw不能用等等。。。

本文链接:https://cs.pynote.net/sf/python/202111242/

-- EOF --

-- MORE --