最近在編譯一個工程的時候遇到問題,看到報錯信息指向的是一個py文件,第一反應就是python版本問題,網上一搜果然是需要把版本從3.5升級到3.7。
網上關於安裝python的文章有很多,基本方法分為兩種
添加新的源,然後用標准的apt install的方式安裝
這種方法的問題是因為年代久遠,很多文章裡面提供的源已經失效了。而且也只能安裝特定的幾種版本,做不到任意版本選擇。
參考的鏈接如下
https://blog.csdn.net/u013578795/article/details/105460386
https://blog.csdn.net/qq_40965177/article/details/83500817
下載源碼編譯,然後刪除原來的python,把新的python鏈接上去。
這個方法的缺點是不同的項目需要不同版本的python,刪掉舊版本會導致別的項目出問題。
參考的鏈接如下
https://blog.csdn.net/qq_44696031/article/details/124564768
https://blog.csdn.net/MenciusHometown/article/details/77688728
還是采用源碼方式編譯安裝新的python,然後利用update-alternatives來切換自己需要的版本
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
打開python官網 https://www.python.org/ftp/python/
找到自己需要的版本
這裡以python-3.7.1rc2為例
下載源碼,並解壓。注意文件名要區分大小寫
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
tar xvf Python-3.7.1rc2.tgz
配置安裝路徑。注意這裡指定的/usr/local/python3.7,後面會用到這個路徑
cd Python-3.7.1rc2
./configure --prefix=/usr/local/python3.7 --enable-optimizations --with-ensurepip=install
make
sudo make install
[email protected]:~$ update-alternatives --list python
update-alternatives: error: no alternatives for python
第一次運行上面的命令可能會報錯update-alternatives: error: no alternatives for python
這個錯誤信息表示 python 的替代版本還沒被update-alternatives識別
要解決這個問題,我們先找到所有的python版本
[email protected]:~$ ll /usr/bin/python*
lrwxrwxrwx 1 root root 9 8月 3 15:11 /usr/bin/python -> python2.7*
lrwxrwxrwx 1 root root 9 8月 3 15:11 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3488528 7月 22 2020 /usr/bin/python2.7*
lrwxrwxrwx 1 root root 9 8月 3 15:11 /usr/bin/python3 -> python3.5*
-rwxr-xr-x 1 root root 4456208 7月 20 2020 /usr/bin/python3.5*
-rwxr-xr-x 1 root root 4456208 7月 20 2020 /usr/bin/python3.5m*
lrwxrwxrwx 1 root root 10 8月 3 15:11 /usr/bin/python3m -> python3.5m*
如上圖所示,現有的兩個版本分別為/usr/bin/python2.7和/usr/bin/python3.5
添加這兩個版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
還需要添加我們自己編譯的版本,前面設置的安裝路徑是/usr/local/python3.7,
因此完整的文件路徑為/usr/local/python3.7/bin/python3.7
sudo update-alternatives --install /usr/bin/python python /usr/local/python3.7/bin/python3.7 3
[email protected]:~$ update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.5
運行sudo update-alternatives --config python,然後輸入對應的序號,比如3,切換到3.7
[email protected]:~$ sudo update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/local/python3.7/bin/python3.7 3 auto mode
* 1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.5 2 manual mode
3 /usr/local/python3.7/bin/python3.7 3 manual mode
Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/local/python3.7/bin/python3.7 to provide /usr/bin/python (python) in manual mode
運行python --version或者直接運行python查看版本信息
已經切換到3.7
[email protected]:~$ python
Python 3.7.1rc2 (default, Aug 3 2022, 21:42:46)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
[email protected]:~$ python --version
Python 3.7.1rc2