python编译安装(centos、uos\ubuntu)

本文详细介绍了在CentOS 8、CentOS 7及Ubuntu环境下从源码编译安装Python的过程,包括依赖安装、配置参数说明及常见错误解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python编译安装

1. centos8 下载编译安装python3.*

  1. 下载 https://www.python.org/
  2. 安装依赖
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel libffi-devel
    
  3. 解压编译
    tar -zxvf Python-3.6.7.tgz
    ./configure --prefix=/opt/python367/  --enable-optimizations  --enable-ipv6
    make && make install
    
    prefix的含义,指定了安装路径。

注意:经过测试,如果你的编译选项 --prefix= 指定了路径,那么你编译python后,执行pip,它默认是找你编译时–prefix= 指定了路径的解释器。因此,推荐–prefix= 改成我们真实需要安装的目录路径。

2. centos7下编译安装 python3.8.12

CentOS7下安装python3.8
参考URL: https://www.cnblogs.com/xiejava/p/15541899.html

环境:

 cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
sudo yum -y install gcc gcc-c++ zlib-devel bzip2-devel openssl-devel  sqlite-devel readline-devel ncurses-devel tk-devel xz-devel gdbm-devel
yum install libffi-devel -y 

python官网https://www.python.org/
下载稳定版本3.8版

wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz
tar -zxvf Python-3.8.12.tgz
cd Python-3.8.12/
# --prefix=要安装的路径 :python3的默认安装路径为/usr/local/bin/python3
#./configure
./configure --enable-shared  --prefix=/opt/python38/  
make&&make install

在编译Python源代码时,使用–enable-shared参数的作用是:

  1. 生成Python的共享库(.so文件)
    默认情况下,编译Python只会生成动态链接的解释器python可执行程序,不会生成共享库文件。
    加入–enable-shared可以产生libpythonX.Y.so的共享库。
  2. 允许Python扩展以共享库形式存在
    有些Python扩展需要以共享库的形式存在,并动态加载到Python中,这样需要Python本身也提供共享库接口。
  3. 支持将Python嵌入到其他程序中
    通过Python提供的stable ABI,其他程序可以将Python的共享库链接并嵌入其中,实现扩展和嵌入Python的目的。
  4. 提高一些程序的加载速度
    使用共享库可以使得多个应用程序共享同一份Python代码,减少内存占用和加载时间。

通过python -V命令查看python版号
使用python命令开启python,然后依次执行如下代码即可查看python安装路径:

>>> import sys
>>> sys.path

编译过程报错

编译报错: Could not import runpy module

参考URL: https://stackoverflow.com/questions/44463879/could-not-import-runpy-module

在低版本的gcc版本中带有 --enable-optimizations 参数时会出现上面问题
gcc 8.1.0修复此问题

1、升级gcc至8.1.0【不推荐】
2、./configure参数中去掉 --enable-optimizations

但是3.8.12测试 ./configure参数中去掉 --enable-optimizations,依旧报错。可以尝试方法1,升级GCC(未测试验证)

在 CentOS 7 软件源上,默认 GCC 可用版本是4.8.5:

Centos python3编译安装以及编译gcc升级
参考URL: https://cloud.tencent.com/developer/article/1754597

gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
Copyright © 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

编译python3.8 报错:Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host()

参考本人原文:https://blog.youkuaiyun.com/inthat/article/details/131365519

3. uos\ubuntu 下载编译安装python3.*

  1. 安装依赖
sudo apt-get update
sudo apt-get install build-essential
  1. 解压编译
    tar -zxvf Python-3.6.7.tgz
    ./configure --prefix=/opt/python367/  --enable-optimizations  --enable-ipv6
    make && make install
    
    prefix的含义,指定了安装路径

总结: 同centos,就是依赖安装有点差异!

<think>好的,我现在要帮用户在UOS系统中下载并安装Python 3.9。首先,我需要回顾用户之前的问题和之前的回答,看看有没有相关的信息可以利用。 用户之前询问了UOS系统中哪些系统组件依赖Python 3.7,而我的回答提到了保留Python 3.7的重要性,以及如何维护多版本共存。现在用户的需求是安装Python 3.9,但可能需要确保不影响系统原有的Python 3.7环境。 接下来,用户提供了几个引用链接,主要是关于在UOS和其他Linux系统上手动编译安装Python 3.9的教程,还有使用Docker和pyenv的方法。我需要综合这些信息,给出一个适合UOS安装步骤。 首先,安装依赖项是关键,因为编译Python需要开发工具和库。根据引用[2],CentOSUbuntu需要安装不同的依赖,而UOS是基于Debian的,所以应该使用apt命令来安装依赖。例如,build-essential、libssl-dev等。引用[3]提到了使用pyenv安装Python 3.9.1,但用户可能更倾向于手动安装,所以需要提供两种方法:手动编译和使用pyenv。 手动编译的步骤包括下载源码、配置、编译安装。需要注意--prefix参数指定安装路径,避免覆盖系统自带的Python 3.7。同时,用户可能需要更新符号链接,但根据之前的回答,覆盖系统Python可能导致问题,所以建议将Python 3.9安装到独立目录,并通过虚拟环境或手动路径调用。 另外,引用[4]提到使用Docker部署Python环境,这也是一个可选方案,特别是当用户希望隔离环境时。不过用户明确要求下载并安装到系统中,所以Docker可能作为备选方案。 使用pyenv的话,步骤比较简单,可以管理多个Python版本,但需要先安装pyenv和相关插件。引用[3]中的用户成功安装了3.9.1,所以可以推荐这种方法,尤其适合需要多版本切换的情况。 在安全性和兼容性方面,需要提醒用户不要替换系统自带的Python 3.7,否则可能影响依赖它的系统组件。应该通过update-alternatives或者环境变量来管理不同版本,确保系统工具仍使用Python 3.7,而用户自己使用Python 3.9。 验证安装时,要检查python3.9的版本,并确保pip3.9可用。另外,如果用户遇到模块缺失的问题,可能需要安装额外的库,或者使用虚拟环境。 总结下来,安装方法可以分为三种:手动编译安装、使用pyenv、使用Docker容器。用户可以根据需求选择最合适的方法。需要详细列出每一步的命令,并给出注意事项,避免用户操作失误导致系统问题。</think>在统信UOS系统中安装Python 3.9时,需特别注意与系统默认Python 3.7的共存问题。以下是三种主流安装方案及详细步骤: --- ### 一、手动编译安装(推荐) #### 步骤1:安装依赖项 ```bash sudo apt update sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev ``` #### 步骤2:下载并解压源码 ```bash wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz tar -xvf Python-3.9.16.tgz cd Python-3.9.16 ``` #### 步骤3:配置与编译 ```bash ./configure --prefix=/usr/local/python3.9 --enable-optimizations make -j$(nproc) sudo make altinstall # 使用altinstall避免覆盖系统Python ``` #### 步骤4:验证安装 ```bash /usr/local/python3.9/bin/python3.9 --version # 应输出Python 3.9.16 ``` --- ### 二、使用pyenv多版本管理 #### 步骤1:安装pyenv ```bash curl https://pyenv.run | bash echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc ``` #### 步骤2:安装Python 3.9 ```bash sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev pyenv install 3.9.16 # 自动下载并编译[^3] ``` #### 步骤3:版本切换 ```bash pyenv global 3.9.16 # 全局生效 # 或 pyenv local 3.9.16 # 仅当前目录生效 ``` --- ### 三、Docker容器化方案 #### 步骤1:拉取官方镜像 ```bash sudo docker pull python:3.9-slim ``` #### 步骤2:创建持久化容器 ```bash sudo docker run -itd --name python39 \ -v $HOME/python_projects:/app \ python:3.9-slim ``` #### 步骤3:进入容器环境 ```bash sudo docker exec -it python39 bash # 容器内验证 python --version # 显示Python 3.9.x[^4] ``` --- ### 关键注意事项 1. **系统Python保护** - 禁止删除`/usr/bin/python3`软链接(默认指向Python 3.7) - 通过`update-alternatives`管理多版本: ```bash sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/python3.9/bin/python3.9 2 ``` 2. **pip版本隔离** - 为Python 3.9单独配置pip: ```bash /usr/local/python3.9/bin/python3.9 -m pip install --upgrade pip ``` 3. **开发环境建议** | 场景 | 推荐方案 | |---------------------|---------------------------| | 系统级应用开发 | 手动编译安装 | | 多项目多版本需求 | pyenv虚拟环境 | | 隔离测试环境 | Docker容器化部署[^4] | --- ### 常见问题解决 - **编译报错`ModuleNotFoundError: No module named '_ctypes'`** 修复:安装libffi-dev后重新编译 ```bash sudo apt install libffi-dev && make clean && make ``` - **容器内无法访问系统硬件** 添加设备访问权限: ```bash sudo docker run -it --device=/dev/ttyUSB0 python:3.9-slim ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值