centos安装python3.9.0 1.先决条件: sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel 2.下载: 各版本地址:https://www.python.org/ftp/python wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz 3.解压: tar xzf Python-3.9.0.tgz 4.安装: cd Python-3.9.0 sudo ./configure --enable-optimizations sudo make altinstall 5.创建虚拟环境(for flask project,仅安装python则忽略) virtualenv -p /usr/local/bin/python3.9 venv source ./venv/bin/activate pip install -r requirements.txt 遇到的问题: 1.yum源问题导致gcc安装失败 (1)执行sudo ./configure --enable-optimizations报缺少C编译器 configure: error: in `/opt/python39/Python-3.9.0': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details 尝试执行:yum install gcc 时报yum库libgomp版本冲突 Error: Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem. Eg.: ... ... Protected multilib versions: libgomp-4.8.5-4.el7.i686 != libgomp-4.8.5-36.el7_6.2.x86_64 rpm -qa|grep libgomp: libgomp-4.8.5-36.el7_6.2.x86_64 尝试执行yum install gcc --setopt=protected_multilib=false忽略protected multilib,依然报错 Transaction check error: package libgomp-4.8.5-36.el7_6.2.x86_64 (which is newer than libgomp-4.8.5-4.el7.i686) is already installed 目测是该yum源中libgomp版本还是不符合gcc依赖,只好尝试升级yum源到国内阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache vi /etc/yum.repos.d/CentOS-Base.repo #将所有http改为https,注意备份该文件(vi替换命令 :1,$s/http/https/g) yum update yum install gcc 2.升级gcc版本 centos7使用yum install gcc后默认安装版本是gcc 4.8.5,版本比较低,升级gcc版本: sudo yum install centos-release-scl sudo yum install devtoolset-7 scl enable devtoolset-7 bash gcc --version # 升级后为7.3.1 3.pip install -r requirements.txt报错,降低setuptools版本,新版本setuptools移除了Feature Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-wduw3u48/markupsafe/setup.py", line 6, in <module> from setuptools import setup, Extension, Feature ImportError: cannot import name 'Feature' from 'setuptools' 这个通常会在安装 Flask 项目的依赖时发生,因为 MarkupSafe 是 Flask 的依赖之一 原因是因为 Python 打包工具 setuptools 在 46.0.0 版本删掉了弃用的 Feature, 更新 MarkupSafe 到最新版本 pip install --upgrade pip setuptools==45.2.0 4.启动项目报警告 UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError 重新编译python: sudo yum install -y xz-devel sudo ./configure --enable-optimizations sudo make altinstall 5.启动项目报警告 RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used remember ... it is not a bug, it's a feature 这个是gunicorn 19.x有可能报的问题,可以选择升级gunicorn解决: pip install gunicorn==20.0.4 参考: https://tecadmin.net/install-python-3-9-on-centos/ (安装python39) https://developer.aliyun.com/article/704987 (配置阿里镜像) https://www.itcoder.tech/posts/how-to-install-gcc-compiler-on-centos-7/ (升级gcc) https://zhuanlan.zhihu.com/p/127820010 (MarkupSafe报错) https://stackoverflow.com/questions/57743230/userwarning-could-not-import-the-lzma-module-your-installed-python-is-incomple(lzma问题) https://askubuntu.com/questions/1216292/python3-runtimewarning-line-buffering-buffering-1-isnt-supported-in-binary-m (gunicorn line buffer问题)