Python-3.12.0源码包编译安装安装到centos7.5

Python-3.12.0源码包编译安装安装到centos7.5(其他版本类似原理相同)

第一步:官网下载,选择Python版本Python-3.12.0

✅官网:https://www.python.org/downloads/source/ 太慢

✅镜像网站:https://registry.npmmirror.com/binary.html?path=python/3.12.0/

选择Python-3.12.0.tgz安装包下载即可

第二步:更新yum仓库,避免可能出现的不兼容性以及依赖冲突问题(选择性)

sudo yum update

sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel

第三步:上传解压到到/opt/module目录下

tar -zxvf Python-3.12.0.tgz -C /opt/module/

第四步:进入到解压后的Python-3.12.0目录,配置安装选项:

./configure --enable-shared

# --prefix=xxx:指定python的安装目录,默认位置/usr/local/bin/

# --enable-shared:配置构建选项的命令,构建过程中启用共享库支持

# --enable-optimizations会将其构建为一个共享库,这可以减少内存占用并提高启动速度

第五步:执行编译

make && make install

第六步:测试

/usr/local/bin/python3 -V

# 可能会报错,找不到共享库,解决见最底下

# 链接

sudo ln -s /usr/local/bin/python3 /usr/bin/python-3.12.0

第七步:配置环境变量(可选)

sudo vim /etc/profile.d/my_env.sh

# PYTHON_HOME

export PYTHON_HOME=/usr/local/bin

export PATH=$PYTHON_HOME/bin:$PATH

source /etc/profile

第八步:命令行测试

python2

python3

# 前面链接了,所以好使

[root@hadoop102 bin]$ python-3.12.0

Python 3.12.0 (main, Dec 15 2023, 19:37:09) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux

Type "help", "copyright", "credits" or "license" for more information.

第九步:常用位置

/usr/local/bin 安装python-3.12.0的位置

/usr/local/lib python-3.12.0共享库文件的位置

/usr/bin 执行命令的 以及系统自带的python2和python3都在这里

# ll /usr/bin/ | grep python

找不到共享库错误

error while loading shared libraries: xx.so: cannot open shared object file: No such file 错误的原因和解决办法,执行某些外部程序的时候可能会提示找不到共享库的错误,原因一般有两个:一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可.另外一个原因就是已经安装了该共享库, 但 执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.

解决1:如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令

ldconfig

解决2:如果共享库文件安装到了/usr/local/lib(开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中

sudo cat /etc/ld.so.conf

sudo echo "/usr/local/lib" >> /etc/ld.so.conf

sudo ldconfig

解决3:如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下,但是又不想在/etc/ld.so.conf中加路径 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.

LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库.比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell或者my_env.sh里加入以下语句即可:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

你可能感兴趣的:(python,python,开发语言)