• Linux下安装Python3.9


    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问题)
  • 相关阅读:
    线程池原理分析
    强引用-软引用-弱引用
    并发编程之多线程
    linux关于获取时间的几个函数
    gdb安装和使用
    c++四种显式类型转换
    ARP协议
    Vmware 共享文件夹不显示的问题
    gdb基本使用
    动态二维数组实现
  • 原文地址:https://www.cnblogs.com/zhanqing/p/15309100.html
Copyright © 2020-2023  润新知