CentOS7 下升级Python版本
<p>来博客园的第一篇博客,以后要坚持养成记录、分享的习惯啊,这样生活才会有痕迹~</p><hr>
<p>服务器版本:CentOS 7.3 64位</p>
<p>旧Python版本:2.7.5</p>
<p>新Python版本:3.8.0</p>
<p>说明:本次配置使用root用户进行操作,故在代码中未使用sudo语句,请使用非root用户留意</p>
<hr>
<p> <span style="font-size: 14pt">1、切换工作目录至/usr/local</span></p>
<p>在Linux系统下,路径/usr/local相当于C:/Progrem Files/,通常安装软件时便安装到此目录下。</p>
<p>执行命令:</p>
<div class="cnblogs_code">
<pre>cd /usr/local</pre>
</div>
<p><span style="font-size: 14pt">2、下载目标python版本压缩包</span></p>
<p>执行命令:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">wget</span> http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz</span></pre>
</div>
<p>这里,我使用的是python在国内的镜像,若希望使用官网地址当然也是可以的,不过速度就两说了...</p>
<p><span style="font-size: 14pt">3、解压压缩包</span></p>
<p>执行命令:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">tar</span> -xzf Python-<span style="color: rgba(128, 0, 128, 1)">3.8</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>.tgz</pre>
</div>
<p><span style="font-size: 14pt">4、在当前目录下创建文件夹--python3</span></p>
<p>执行命令:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">mkdir</span> python3</pre>
</div>
<p><span style="font-size: 14pt">5、编译与安装</span></p>
<h3><strong>执行步骤:</strong></h3>
<p>a.进入解压文件路径</p>
<div class="cnblogs_code">
<pre>cd Python-<span style="color: rgba(128, 0, 128, 1)">3.8</span>.<span style="color: rgba(128, 0, 128, 1)">0</span></pre>
</div>
<p>b.生成makefile文件</p>
<div class="cnblogs_code">
<pre>./configure --prefix=/usr/local/python3</pre>
</div>
<p>c. 对makefile文件进行操作</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">make</span></pre>
</div>
<p>d.安装</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">make</span> <span style="color: rgba(0, 0, 255, 1)">install</span></pre>
</div>
<h3><strong>命令解释:</strong></h3>
<ul>
<li>在Linux中通过源码安装程序时,对于解压文件,先执行./configure,后执行make,最后执行make install</li>
</ul>
<p> make 命令 是对makefile文件操作,make install 是安装命令,那么 ./configure 是干什么呢?./configure 其实就是生成 makefile 文件</p>
<p style="text-align: right">——参考“朝闻道”</p>
<ul>
<li>--prefix作用:编译的时候用来指定程序存放路径。</li>
</ul>
<p> 不指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share</p>
<p> 指定prefix,直接删掉一个文件夹就够了</p>
<p style="text-align: right">——参考“百度知道”</p>
<h3>问题:</h3>
<p>在这个过程中,出现了安装失败的问题:</p>
<div class="cnblogs_code">
<pre>zipimport.ZipImportError: can<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">t decompress data; zlib not available</span></pre>
</div>
<p>这是由于缺少依赖造成的,可执行以下代码:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">yum</span> <span style="color: rgba(0, 0, 255, 1)">install</span> zlib-devel <span style="color: rgba(0, 0, 255, 1)">bzip2</span> <span style="color: rgba(0, 0, 255, 1)">bzip2</span>-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel</pre>
</div>
<p style="text-align: right">——参考“寒爵”</p>
<p><span style="font-size: 14pt">6、两种版本配置方法</span></p>
<p>关于配置python版本的方法大致分为<strong>两种</strong>:</p>
<ol>
<li>直接创建python3软链,利用命令 <strong>python3</strong> 调用新版本python,与自带python不冲突</li>
<li>覆盖现有python,使其指向新安装的python,利用命令 <strong>python</strong> 便可调用新版本python</li>
</ol>
<h3>所涉及命令解释</h3>
<ul>
<li>ln命令用来为文件创建链接,链接类型分为硬链接和符号(软)链接两种,默认的连接类型是硬连接。如果要创建符号链接必须使用"-s"选项,符号链接相当于Windows下的快捷方式,即可以实现启动python时指向python3.8</li>
</ul>
<div class="cnblogs_code">
<pre>ln -s a b # 建立软连接,b指向a</pre>
</div>
<p style="text-align: right">——参考“颜子”</p>
<p style="text-align: left">下面分别对两种方法进行介绍。</p>
<p><span style="font-size: 14pt">6.1直接创建python3软链</span></p>
<p>在/usr/bin路径下创建python3软链,指向已安装的python3</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">ln</span> -s /usr/local/python3/bin/python3 /usr/bin/python3</pre>
</div>
<p>在/usr/bin路径下创建pip3软链,指向已安装的pip3</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">ln</span> -s /usr/local/python3/bin/pip3 /usr/bin/pip3</pre>
</div>
<p>此时系统中存在两个python版本:</p>
<p>命令 <strong>python </strong>对应的仍是默认2.7版本</p>
<p>命令 <strong>python3 </strong>则对应新安装的3.8版本,</p>
<p>此本方法到此便结束了,可以快乐地打出 <strong>python3</strong> <strong>-V, pip3 -V</strong>查看对应版本了</p>
<p><span style="font-size: 14pt">6.2 覆盖现有python,启动python时指向python3.8</span></p>
<h3>备份旧python与pip</h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">mv</span> /usr/bin/python /usr/bin/<span style="color: rgba(0, 0, 0, 1)">python2_old
</span><span style="color: rgba(0, 0, 255, 1)">mv</span> /usr/bin/pip /usr/bin/pip2_old #第三部分的文件名可根据本机版本修改</pre>
</div>
<h3>修改软链接</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">ln</span> -s /usr/local/python3/bin/python3 /usr/bin/<span style="color: rgba(0, 0, 0, 1)">python
</span><span style="color: rgba(0, 0, 255, 1)">ln</span> -s /usr/local/python3/bin/pip3 /usr/bin/pip</pre>
</div>
<p>此方法到这里已经完成一半啦,可以使用命令 <strong>python -V, pip -V</strong>查看版本</p>
<p>根据“撑起风帆”的经验,还应该对easy_install的指向进行修改,使用python3时可能会用到(未验证),用到时可根据上述“修改软链接”的方法进行修改</p>
<p><span style="font-size: 14pt">6.2.1 收尾工作</span></p>
<p>由于修改了python的版本,会导致一些依赖于旧版本的程序出现错误,如<strong>yum</strong>,可进行如下配置:</p>
<h3>打开yum文件</h3>
<div class="cnblogs_code">
<pre>vim /usr/bin/<span style="color: rgba(0, 0, 255, 1)">yum</span></pre>
</div>
<p>文件第一行如下图:</p>
<p><img src="https://img2018.cnblogs.com/blog/1849542/201910/1849542-20191027175633589-1793925683.png"></p>
<p> 将python修改为旧的版本号,此处添加2.7:</p>
<p><img src="https://img2018.cnblogs.com/blog/1849542/201910/1849542-20191027175723072-1647453815.png"></p>
<p> 不过在安装软件时仍会报错:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">SyntaxError: invalid syntax
File </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/usr/libexec/urlgrabber-ext-down</span><span style="color: rgba(128, 0, 0, 1)">"</span>, line <span style="color: rgba(128, 0, 128, 1)">28<br> except OSError, e:</span></pre>
</div>
<p>还是因为python更换的原因, 依照上述操作修改文件即可:打开/usr/libexec/urlgrabber-ext-down 文件,将 <strong>#!/usr/bin/python</strong> 修改为 <strong>#!/usr/bin/python2.7 </strong></p>
<p>其他工具或库如果在安装过程中也报类似错误,同法处理。</p>
<p>此时系统仍存在两个python版本,但命令 <strong>python</strong> 对应的是新安装的3.8版本,命令 <strong>python2</strong> 才对应之前的默认2.7版本<br>此方法到这里就结束啦!</p>
<hr>
<p> 除文中所列参考文章外,主要参考文章还有:</p>
<p>https://blog.csdn.net/bawenmao/article/details/80216516</p>
<p>https://blog.csdn.net/u011798443/article/details/80825817</p>
<p>谢谢以上各位!</p><br><br>
来源:https://www.cnblogs.com/ech2o/p/11748464.html
頁:
[1]