在阿里云CentOS服务器上安装Python3.7并设置为默认Python
<h1 id="1引言">1.引言</h1><p>Linux操作系统自带一个python2.7,没有python3,在开发的时候非常不便,因此需要安装一个python3,并且将python3设置系统默认python,同时还不能影响那些Linux系统中需要用python2的底层文件。</p>
<h1 id="2-方法">2. 方法</h1>
<p>2.1 查看操作系统及Python基本信息</p>
<pre><code>cat /etc/redhat-release # 查看内核版本
python -V # 查看python版本
which python # 查看python路径
</code></pre>
<p>我这边的系统的内核为CentOS 7,默认python的版本为2.7.5,路径为/usr/bin/python。</p>
<p>然后我们导航到该目录,查看python相关文件的信息,可以看到python和python2指向的都是python2.7。</p>
<pre><code># cd /usr/bin
# ll python* # 查看以python开头的文件信息
lrwxrwxrwx. 1 root root 7 Oct 152017 python -> python2
lrwxrwxrwx. 1 root root 9 Oct 152017 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug42017 python2.7
</code></pre>
<h1 id="22-安装依赖包编译安装程序等所需">2.2 安装依赖包(编译,安装程序等所需)</h1>
<pre><code>yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
yum -y install readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum -y install libffi-devel
</code></pre>
<p>(如果是RedHat/CentOS平台,用yum install;如果是Ubuntu/Debian平台,用apt-get install)</p>
<h1 id="23-下载python">2.3 下载Python</h1>
<p>到Python官方页面选择一个版本的Python:Python Source Releases,选择“XZ compressed source tarball</p>
<p>然后用wget命令下载到用户目录</p>
<pre><code># cd ~
# wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
</code></pre>
<p>下载完毕后可以看到Python源码已经静静的躺在你的目录里了,</p>
<pre><code># ls
Python-3.7.4.tar.xzQQ9.0.9_1.exewget-log
</code></pre>
<h1 id="24-编译并安装python">2.4 编译并安装Python</h1>
<p>首先对刚刚下载的压缩包进行解压,</p>
<pre><code># tar -xvJf Python-3.7.4.tar.xz
</code></pre>
<p>进入解压后的目录,可以看到Python的源码文件,其中configure用来配置,配置完成后会生成用来安装的Makefile,</p>
<pre><code># cd Python-3.7.4
# ll
total 1060
-rw-r--r--1 501 50110953 Jul9 02:03 aclocal.m4
-rw-r--r--1 501 501 631 Jul9 02:03 CODE_OF_CONDUCT.rst
-rwxr-xr-x1 501 50144166 Jul9 02:03 config.guess
-rwxr-xr-x1 501 50136251 Jul9 02:03 config.sub
-rwxr-xr-x1 501 501 503641 Jul9 02:03 configure
-rw-r--r--1 501 501 167840 Jul9 02:03 configure.ac
drwxr-xr-x 18 501 501 4096 Jul9 02:31 Doc
drwxr-xr-x2 501 501 4096 Jul9 02:03 Grammar
drwxr-xr-x3 501 501 4096 Jul9 02:03 Include
-rwxr-xr-x1 501 501 7122 Jul9 02:03 install-sh
drwxr-xr-x 33 501 501 4096 Jul9 02:03 Lib
-rw-r--r--1 501 50112769 Jul9 02:03 LICENSE
drwxr-xr-x2 501 501 4096 Jul9 02:03 m4
drwxr-xr-x8 501 501 4096 Jul9 02:03 Mac
-rw-r--r--1 501 50163658 Jul9 02:03 Makefile.pre.in
drwxr-xr-x2 501 501 4096 Jul9 02:31 Misc
drwxr-xr-x 13 501 501 4096 Jul9 02:03 Modules
drwxr-xr-x4 501 501 4096 Jul9 02:03 Objects
drwxr-xr-x2 501 501 4096 Jul9 02:03 Parser
drwxr-xr-x6 501 501 4096 Jul9 02:03 PC
drwxr-xr-x2 501 501 4096 Jul9 02:03 PCbuild
drwxr-xr-x2 501 501 4096 Jul9 02:03 Programs
-rw-r--r--1 501 50143204 Jul9 02:03 pyconfig.h.in
drwxr-xr-x3 501 501 4096 Jul9 02:03 Python
-rw-r--r--1 501 50110113 Jul9 02:03 README.rst
-rw-r--r--1 501 501 103776 Jul9 02:03 setup.py
drwxr-xr-x 23 501 501 4096 Jul9 02:03 Tools
</code></pre>
<p>配置安装目录,</p>
<pre><code># ./configure prefix=/usr/local/python3 --enable-optimizations
</code></pre>
<blockquote>
<p>注:有时候如果加上开启优化选项 "--enable-optimizations",下面编译 make 时会报错“Fatal Python error: _PySys_BeginInit: can't initialize sys module”,可能和内核版本有关系,如果报错可以去掉该选项然后重新配置并编译。</p>
</blockquote>
<p>编译并安装Python</p>
<pre><code># make
# make install
</code></pre>
<p>然后cd到 /usr/local,可以看到python3已经安装好了</p>
<pre><code># cd /usr/local/
# ls
aegisbinetcgamesincludeliblib64libexecpython3sbinsharesrc
</code></pre>
<h1 id="25-将python3添加到系统命令">2.5 将python3添加到系统命令</h1>
<p>将 /python3/bin中的python3 软链到 /usr/bin/python,使以后执行 python 命令时都会指向 python3</p>
<pre><code># ln -s /usr/local/python3/bin/python3 /usr/bin/python
</code></pre>
<p>然后执行python,可以发现已经是3.7.4版本的了</p>
<pre><code># python
Python 3.7.4 (default, Aug 21 2019, 15:07:15)
on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
</code></pre>
<h1 id="26-将需要python2的程序重定向到python2">2.6 将需要python2的程序重定向到python2</h1>
<p>由于yum需要python2,所以需要把yum文件重新指向python2</p>
<pre><code># vi /usr/bin/yum
</code></pre>
<p>然后将第一行的<strong>#!/usr/bin/python</strong>更改为<strong>#!/usr/bin/python2</strong>,yum就可以执行了。</p>
<p>同理,<strong>/usr/libexec/urlgrabber-ext-down</strong> 这个文件也做一下相同的操作</p>
<h1 id="27-配置pip3">2.7 配置pip3</h1>
<p>如下所示可以看到,pip3还没有添加进系统目录里,因此同样需要做一下软链。</p>
<pre><code># pip2 -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
# pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
# pip3 -V
-bash: pip3: command not found
</code></pre>
<p>将原来的pip备份,然后把pip3软链到pip,这样以后执行pip就是pip3,pip2就是pip2了:</p>
<pre><code># mv /usr/bin/pip /usr/bin/pip.bak
# ln -s /usr/local/python3/bin/pip3/usr/bin/pip
# pip -V
pip 19.0.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
</code></pre>
<h1 id="3-结尾">3. 结尾</h1>
<p>基本上就是这样了,步骤基本上可以分为:</p>
<p>① 安装依赖库并备份原/usr/bin目录下的python</p>
<p>② 下载并编译安装python3</p>
<p>③ 建立python3和pip3的软链</p>
<p>④ 把需要python2的系统文件改写,重新指向python2</p><br><br>
来源:https://www.cnblogs.com/xinzaiyuan/p/12059326.html
頁:
[1]