直接使用源码安装其实挺方便的.
以下例子将下载 Python 3.7.4, 若需要其他版本, 请在 官方下载 里选择.
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
tar -zxvf Python-3.7.4.tgz
cd Python-3.7.4
源码安装前, 可能需要安装的库:
sudo yum install openssl-devel -y # make ssl module available
sudo yum install libffi-devel -y # to avoid "_ctypes" missing error
sudo yum install zlib-devel -y # to avoid "zlib" missing error
其实这几个库都是为了解决 pip3 的相关问题:
- 如果没有 openssl-devel, 那么 pip3 在安装库的时候可能会报 SSL 相关错误
- 如果没有 libffi-devel 和 zlib-devel 那么 pip3 将无法编译(如果环境有这两个依赖存在, 编译 Python3 的时候将自动成功编译 pip3, 并在
make install
的时候拷贝到可执行目录下)
安装完上述几个个依赖后, 解压源码, 进入解压后的文件夹, 按照 Linux 安装软件的惯例:
./configure
make
sudo make install # install needs sudo. this will also install pip3
执行完上述的步骤后, 会把源码文件夹下的编译出来的 python
安装到 /usr/local/bin/python3
. 注意到这里是重命名过的, 可以与系统自带的 /usr/bin/python
区分开来, 所以安装的时候大可放心, 因为不会与系统版本冲突.
同时, 只要在编译 python
的时候没有缺少什么特别的库(因为最开始已经安装了依赖库, 应该是不会缺乏了, 如果实在有缺乏, 再安装编译即可), 在执行 make install
的时候理论上是会自动安装 pip3
到 /usr/local/bin/pip3
, 这里同样会和 Python2.X 用的 /usr/bin/pip
区分开来, 方便使用.
解决 sqlite3 版本过低的问题(重新 build Python3):
# export C_INCLUDE_PATH=/PATH_TO_SQLITE/include
# export CPLUS_INCLUDE_PATH=/PATH_TO_SQLITE/include
# export LD_RUN_PATH=/PATH_TO_SQLITE/lib
export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include
export LD_RUN_PATH=/usr/local/lib
./configure
make
sudo make install
# 下面这个可能也需要(build 的时候不需要)
export LD_LIBRARY_PATH="/usr/local/lib"
Refer: https://stackoverflow.com/a/73449169/4156036
Comments