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
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/3a004df9ab.html
