Python2.7升級到Python3.7及其報錯處理


系統環境說明:
系統版本   Centos7.3和Centos7.6均可
Python版本    Python2.7——》Python3.7  (其中原來的Python2.7不卸載)

安裝方法:
編譯安裝(暫時沒發現其他安裝方法)
Pythony3.7安裝包下載
https://www.python.org/downloads/release/python-376/

#!/bin/bash
#安裝相關依賴
yum install libffi-devel zlib zlib-devel gcc openssl openssl-devel wget -y  
#下載壓縮包
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz  
#解壓
tar -xvf Python-3.7.6.tar.xz  
cd Python-3.7.6
#安裝在/usr/local/python3.7目錄下
./configure --prefix=/usr/local/python3.7  
make
make install
cp /usr/bin/python /usr/bin/python_old  
rm -rf /usr/bin/python
#用新版本的python代替舊版本的python
ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python 
#查看版本時候升級成功 
python --version  
#解決升級python后,yum無法正常使用
sed -i 's/python/python_old/g' /usr/bin/yum 
#解決使用yum時提示except OSError, e: ^ SyntaxError: invalid syntax 
sed -i 's/python/python_old/g' /usr/libexec/urlgrabber-ext-down 
#驗證yum是否能正常使用 
yum list  
#驗證yum是否能正常安裝
yum install lsof -y  
#將新版本的python相關命令加入到系統環境中
echo 'export PATH=$PATH:/usr/local/python3.7/bin/' >> /etc/profile  
#使文件生效
source /etc/profile  

安裝好之后,有時候會報以下錯誤

[root@instance-u5vn5wqr rpm]# yum install lsof -y 
Loaded plugins: langpacks, versionlock
Traceback (most recent call last):
  File "/usr/bin/yum", line 30, in <module>
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 375, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 170, in main
    base.getOptionsConfig(args)
  File "/usr/share/yum-cli/cli.py", line 296, in getOptionsConfig
    (opts, self.cmds) = self.optparser.setupYumConfig(args=args)
  File "/usr/share/yum-cli/cli.py", line 2329, in setupYumConfig
    (opts, cmds) = self.parse_args(args=args)
  File "/usr/lib64/python2.7/optparse.py", line 1401, in parse_args
    self.error(str(err))
  File "/usr/lib64/python2.7/optparse.py", line 140, in __str__
    return _("no such option: %s") % self.opt_str
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 1: ordinal not in range(128)
[root@instance-u5vn5wqr rpm]#

解決方法
在 /usr/share/yum-cli/yummain.py和 /usr/lib64/python2.4/encodings/utf_8.py  中加入三行

import sys
reload(sys)
sys.setdefaultencoding('gbk')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM