程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

如何在ubuntu下安裝任意版本python

編輯:Python

如何在ubuntu下安裝任意版本python

  • 一、現有的幾種安裝方式優缺點分析
    • 1. 方法一添加新的源
    • 2. 方法二下載源碼編譯
  • 二、解決方式
    • 1. 源碼方式編譯python
      • 1.1 安裝編譯需要的包
      • 1.2 下載python源代碼
      • 1.3 配置並編譯
      • 1.4 安裝
    • 2. 用update-alternatives切換python版本
      • 2.1 列出所有可用的版本
        • 2.1.1 update-alternatives --list python
        • 2.1.2 解決no alternatives for python錯誤
        • 2.1.3 再次列出可用的 Python 版本
      • 2.2 切換Python 版本
    • 3.查看當前版本

一、現有的幾種安裝方式優缺點分析

最近在編譯一個工程的時候遇到問題,看到報錯信息指向的是一個py文件,第一反應就是python版本問題,網上一搜果然是需要把版本從3.5升級到3.7。

網上關於安裝python的文章有很多,基本方法分為兩種

1. 方法一添加新的源

添加新的源,然後用標准的apt install的方式安裝
這種方法的問題是因為年代久遠,很多文章裡面提供的源已經失效了。而且也只能安裝特定的幾種版本,做不到任意版本選擇。

參考的鏈接如下
https://blog.csdn.net/u013578795/article/details/105460386
https://blog.csdn.net/qq_40965177/article/details/83500817

2. 方法二下載源碼編譯

下載源碼編譯,然後刪除原來的python,把新的python鏈接上去。
這個方法的缺點是不同的項目需要不同版本的python,刪掉舊版本會導致別的項目出問題。

參考的鏈接如下
https://blog.csdn.net/qq_44696031/article/details/124564768
https://blog.csdn.net/MenciusHometown/article/details/77688728

二、解決方式

還是采用源碼方式編譯安裝新的python,然後利用update-alternatives來切換自己需要的版本

1. 源碼方式編譯python

1.1 安裝編譯需要的包

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

1.2 下載python源代碼

打開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

1.3 配置並編譯

配置安裝路徑。注意這裡指定的/usr/local/python3.7,後面會用到這個路徑

cd Python-3.7.1rc2
./configure --prefix=/usr/local/python3.7 --enable-optimizations --with-ensurepip=install
make

1.4 安裝

sudo make install

2. 用update-alternatives切換python版本

2.1 列出所有可用的版本

2.1.1 update-alternatives --list python

[email protected]:~$ update-alternatives --list python
update-alternatives: error: no alternatives for python

2.1.2 解決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

2.1.3 再次列出可用的 Python 版本

[email protected]:~$ update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.5

2.2 切換Python 版本

運行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

3.查看當前版本

運行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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved