CentOS7中安装Python3😄

众所周知…CentOS中默认只有Python2,那么想使用Python3并指定版本的话,只能靠自己编译安装了。

先切换到root,安装Development tools,还有一些依赖项:

1
2
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel readline-devel tk-devel libffi-devel

安装高版本的sqlite3, 避免在后面使用时出现问题,比如gerapy依赖的django要求sqlite在3.8版本以上,而通过yum安装的版本为sqlite3.7。

1
2
3
4
5
6
7
wget https://github.com/sqlite/sqlite/archive/version-3.28.0.tar.gz
tar -xvf version-3.28.0.tar.gz -C /usr/local
cd /usr/local/sqlite-version-3.28.0/
./configure --prefix=/usr/local/sqlite3
make
make install
ln -s /usr/local/sqlite3/bin/sqlite3 /usr/bin/sqlite3

开始下载安装,我选择了3.7.3版本:

1
2
3
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
tar -xvf Python-3.7.3.tgz -C /usr/local/
cd /usr/local/Python-3.7.3/

在configure时,配置目录、开启安装pip的选项、链接sqlite3

1
2
3
LD_RUN_PATH=/usr/local/sqlite3/lib ./configure --prefix=/usr/local/python3 --with-ensurepip=install --enable-shared --enable-optimizations LDFLAGS="-L /usr/local/sqlite3/lib" CPPFLAGS="-I /usr/local/sqlite3/include"
LD_RUN_PATH=/usr/local/sqlite3/lib make
LD_RUN_PATH=/usr/local/sqlite3/lib make install

注意: 此处的--enable-shared选项是确保为Python构建了共享库,否则在未来的某一天可能遇到类似这样的错误:

1
2
3
4
5
6
7
8
OSError: Python library not found: libpython3.7.so.1.0, libpython3.7m.so.1.0, libpython3.7mu.so.1.0, libpython3.7m.so
This would mean your Python installation doesn't come with proper library files.
This usually happens by missing development package, or unsuitable build parameters of Python installation.

* On Debian/Ubuntu, you would need to install Python development packages
* apt-get install python3-dev
* apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

当看到Successfully installed pip-19.0.3 setuptools-40.8.0就代表已经安装成功了。

编译完成后,需要将共享库拷贝至/usr/lib64目录下

1
cp /usr/local/python3/lib/libpython3.7m.so.1.0 /usr/lib64

要不然在后面会出现问题,不过这里除了拷贝之外,可能还有更好的解决方案:

1
error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

使用ln命令做软链接:

1
2
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

在命令行中输入python3时,可以看到

1
2
3
4
5
$ python3
Python 3.7.3 (default, Jul 4 2019, 23:33:11)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

另外,为pip设置一下TUNA的更新源,可以加快下载的速度。

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

接下来就可以愉快的使用了👀

0%