Ubuntu 18.04 安裝Python 3.7以及安裝後打不開terminal及找不到apt_pkg的解決方法

Ubuntu 16.04可以通過添加PPA庫來安裝python 3.7,也可以通過源碼編譯安裝,CSDN大佬們早就出了一大堆有關的帖子,此處不談。

升級到Ubuntu 18.04,apt源自帶了python 3.7,直接通過sudo apt-get install python 3.7安裝即可

但,問題來了!!

不管是以前從python 3.5升級到python 3.6,還是從3.6到3.7,或者直接從3.5到3.7,升級之後基本上會遇到下面幾個問題:

1. 命令行輸python 3打開的還是python 3.6

這個單純的時因爲沒有把python 3.7鏈接過去,需要更新python 3.7爲python3的解釋器

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 50
sudo update-alternatives --config python3  
# 此處手動選擇python3或者Ubuntu會設置python 3.7爲自動模式

2. 經過第一步後terminal打不開了

真的只是因爲python 3.7的原因!

terminal來自於每個Ubuntu發行版自帶的gnome-terminal腳本,位置在/usr/bin/gnome-terminal,通過vim或者gedit查看可以看到

#! /usr/bin/python3

就在此處,僅僅修改上面一句爲

#! /usr/bin/python3.6

就能使terminal迴歸。

terminal在開發階段使用的是自帶的python 3.6/3.5解釋器,當升級到python 3.7之後,其中的一些內建函數或者語法發生了變化,導致terminal打不開了,一般情況下可以通過

sudo apt-get install gnome-terminal

更新terminal來解決問題,有時候重新安裝並沒有解決問題,是因爲當前Ubuntu版本對應的源裏面沒有更新版的terminal,可以使用上述修改解釋器的方式臨時解決。

3. 驚了!apt_pkg找不見了

ImportError: No module named 'apt_pkg'

該報錯會發生在執行sudo apt-get update / install,pip install,import modules時。

apt_pkg包來自於python_apt或python3_apt,同2,Ubuntu發行版對應了一個python 3.x的版本,而不是更高的版本,在很大程度上可以說明更高版本的python會帶來問題,這裏的問題就是因爲dist包中的apt_pkg.cython.*.so庫版本無法對應。

如果是python 3.5升級了python 3.6,或者是從低版本升級到3.5時,可以使用

sudo apt-get install python3-apt --reinstall

解決,在常規的Ubuntu源中,可能有對應了python 3.5和3.6的apt_pkg的so庫,可能可以解決,但是針對如此多的Ubuntu版本(即使同爲16.04可能對應了不同的子版本),或許真的運氣很不好,只能通過下述方法進行嘗試。

python 3.7臨時解決apt_pkg,適用於3.6和3.5.

apt_pkg的cython包在

cd /usr/lib/python3/dist-packages

目錄下,ls過後可以找到apt_get.cython-(34m, 35m, 36m)-x86_64-linux-gnu.so文件,這裏的括號是指可能存在的版本,即可能有34或35或36,假設我們擁有了apt_get.cython-36m-x86_64-linux-gnu.so,目標python版本是3.7

ln -s apt_get.cython-{36m,37m}-x86_64-linux-gnu.so
# {36m,37m}是一種ln -s的簡化寫法,從36m鏈接到37m但其餘字符不變

ls後可以看到有了目標的apt_get.cython-37m-x86_64-linux-gnu.so庫文件,此時執行sudo apt-get update不會再報出apt_pkg找不到的問題,繼而可以

sudo apt-get install python3-pip

這也只是一種臨時解決方案,本着“能用就行”的原則,夠了。

 

按照Ubuntu 16.04到18.04官方源變化的趨勢,官方肯定會在下一個大版本中放出更優雅的解決方案。

emmmmmmm,愚人拙見,還請指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章