Centos 编译安装 Python

文章目录

  • CentOS 7
    • Python 2.7.17
  • 附录
    • 将指定用户设置为sudoer

CentOS 7

Python 2.7.17

  1. 创建安装目录,下载解压安装包

    su - root
    cd /opt
    mkdir -p /opt/Python/2.7.17
    wget https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz
    tar -xvf ./Python-2.7.17.tgz
    
  2. 安装依赖组件

    yum install openssl-devel libffi-devel xz-devel -y
    yum install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y
    yum install ncurses-devel libpcap-devel zlib-devel tk-devel -y
    
  3. 编译前配置

    cd ./Python-2.7.17/
    ./configure --prefix=/opt/Python/2.7.17 --enable-shared
    #或者打开优化选项
    ./configure --prefix=/opt/Python/2.7.17 --enable-shared --enable-optimizations
    
    #注意,倘若后期运行Python应用遇到undefined symbol: PyUnicodeUCS...的错误,
    #则需据实际情况用加入如下选项重新编译
    --enable-unicode=ucs4
    或者
    --enable-unicode=ucs2
    
    

    判断当前的Python使用的编译选项中包含ucs4还是ucs2

    import sys
    print(sys.maxunicode)
    若结果为1114111,则代表编译时的选项为--enable-unicode=ucs4
    若结果为65535则代表编译时的选项为--enable-unicode=ucs2
    
  4. 编译与安装

    make
    make altinstall
    
  5. 更新动态链接库搜索路径
    不建议以root身份在/etc/ld.so.conf.d/新增文件来添加自行编译的Python2.7的动态链接库路径
    因为动态链接库重名,这会导致系统自带的Python2.7无法运行,进而会导致系统无法正常运行
    建议新建一个专用的用户来运行自行编译的Python2.7,并通过修改.bashrc来设置环境变量LD_LIBRARY_PATH,指明动态链接库路径,示例如下

    su - dev #切换为普通用户
    vi .bashrc #开始编辑.bashrc
    
    #新增内容如下
    export PYTHON27_HOME=/opt/Python/2.7.17
    export LD_LIBRARY_PATH=$PYTHON27_HOME/lib:$LD_LIBRARY_PATH
    export PATH=$PYTHON27_HOME/bin:$PATH
    
  6. 下载并安装pip

    #切换为root
    su - root
    
    #临时修改环境变量,变更动态链接库搜索路径,让Python2.7.17可以正常运行
    export PYTHON27_HOME=/opt/Python/2.7.17
    export LD_LIBRARY_PATH=$PYTHON27_HOME/lib:$LD_LIBRARY_PATH	
    
    cd /opt/Python/2.7.17/bin
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    ./python2.7 ./get-pip.py
    rm ./get-pip.py -f #用完可以删除
    
    #退出登录
    exit
    
  7. 修改pip下载源为清华大学的软件源 (可选)

    ./pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

附录

将指定用户设置为sudoer

su - root
visudo

在打开的文件中,找到如下内容
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

在此处追加一行
具体的用户名     ALL=(ALL)       ALL
随后保存并退出即可

你可能感兴趣的:(Linux,Python,Web)