在 Ubuntu 18.04 LTS 上安裝 Python 3.7

Python 是最流行和按需使用的通用編程語言之一。 它是一種解釋性的高級編程語言,支持多種編程範式,包括過程式、面向對象和函數式編程。 由於其全面的標準庫,它通常被描述為“包含電池”的語言。

它被廣泛使用且用途極其廣泛的編程語言,因為它被初學者和科學家用於不同類型的活動。 它用於系統編程和腳本編寫、自動執行重複性任務、構建網站和 Web 應用程序、機器學習算法、數據分析等等。

在本教程中,我們將學習如何在 Ubuntu 18.04 LTS Bionic Beaver 中安裝 Python 3.7。 我們將包括在 Ubuntu 18.04 機器上安裝它的兩種主要方式,一種是通過 死蛇PPA 使用 APT 包管理器,而另一個是通過源代碼編譯。

使用 APT(使用 PPA)在 ubuntu 上安裝 Python 3 .7

默認情況下,Ubuntu 18.04 附帶 Python 3.6.9。 通過運行以下命令,您可以獲得python版本:

python3 --version
Python 3.6.9

首先,我們需要確保更新 Ubuntu 18.04 機器的 Ubuntu 軟件包存儲庫索引。 這可以通過執行以下命令來完成:

$ sudo apt update

更新完成後,我們需要確保在我們的機器中安裝了“software-properties-common”軟件包,以便我們可以在我們的機器中添加 PPA。

$ sudo apt install software-properties-common

現在,我們可以使用以下命令輕鬆添加 deadsnakes PPA:

$ sudo add-apt-repository ppa:deadsnakes/ppa

最後,隨著所需的 PPA 添加到我們的 Ubuntu 18.04 機器中,我們現在可以簡單地使用 apt 命令來安裝 Python 3.7。

-y apt 通知命令中的選項將自動設置為提示。

$ sudo apt install python3.7 -y

Output
$ sudo apt install python3.7 -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpython3.7-minimal libpython3.7-stdlib python3-distutils python3-lib2to3
python3.7-minimal
Suggested packages:
python3.7-venv python3.7-doc binfmt-support
The following NEW packages will be installed:
libpython3.7-minimal libpython3.7-stdlib python3-distutils python3-lib2to3
python3.7 python3.7-minimal
0 upgraded, 6 newly installed, 0 to remove and 321 not upgraded.
Need to get 4,792 kB of archives.
After this operation, 26.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 libpython3.7-minimal amd64 3.7.7-1+bionic1 [596 kB]
Get:2 https://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-lib2to3 all 3.6.9-1~18.04 [77.4 kB]
Get:3 https://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 python3.7-minimal amd64 3.7.7-1+bionic1 [1,839 kB]
Get:4 https://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python3-distutils all 3.6.9-1~18.04 [144 kB]
Get:5 https://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 libpython3.7-stdlib amd64 3.7.7-1+bionic1 [1,784 kB]
Get:6 https://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic/main amd64 python3.7 amd64 3.7.7-1+bionic1 [351 kB]
Fetched 4,792 kB in 7s (737 kB/s)
Selecting previously unselected package libpython3.7-minimal:amd64.
(Reading database ... 134446 files and directories currently installed.)
Preparing to unpack .../0-libpython3.7-minimal_3.7.7-1+bionic1_amd64.deb ...
Unpacking libpython3.7-minimal:amd64 (3.7.7-1+bionic1) ...
Selecting previously unselected package python3.7-minimal.
Preparing to unpack .../1-python3.7-minimal_3.7.7-1+bionic1_amd64.deb ...
Unpacking python3.7-minimal (3.7.7-1+bionic1) ...
Selecting previously unselected package libpython3.7-stdlib:amd64.
Preparing to unpack .../2-libpython3.7-stdlib_3.7.7-1+bionic1_amd64.deb ...
Unpacking libpython3.7-stdlib:amd64 (3.7.7-1+bionic1) ...
Selecting previously unselected package python3-lib2to3.
Preparing to unpack .../3-python3-lib2to3_3.6.9-1~18.04_all.deb ...
Unpacking python3-lib2to3 (3.6.9-1~18.04) ...
Selecting previously unselected package python3-distutils.
Preparing to unpack .../4-python3-distutils_3.6.9-1~18.04_all.deb ...
Unpacking python3-distutils (3.6.9-1~18.04) ...
Selecting previously unselected package python3.7.
Preparing to unpack .../5-python3.7_3.7.7-1+bionic1_amd64.deb ...
Unpacking python3.7 (3.7.7-1+bionic1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.2) ...
Setting up libpython3.7-minimal:amd64 (3.7.7-1+bionic1) ...
Setting up python3.7-minimal (3.7.7-1+bionic1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) ...
Setting up python3-lib2to3 (3.6.9-1~18.04) ...
Setting up python3-distutils (3.6.9-1~18.04) ...
Setting up libpython3.7-stdlib:amd64 (3.7.7-1+bionic1) ...
Setting up python3.7 (3.7.7-1+bionic1) ...

現在,為了確定python是否安裝成功,我們可以檢查python版本如下。

$ python3.7 -V
Python 3.7.7

從源代碼在 ubuntu 上安裝 Python 3.7

在這種方法中,我們將學習如何通過從源代碼編譯 Python 3.7 在我們的 Ubuntu 18.04 機器上安裝它。 為了繼續前進,我們需要確保滿足某些先決條件。 首先,我們需要確保編譯源代碼所需的構建工具安裝在我們的機器上。

為此,我們首先需要更新 apt 的本地存儲庫索引,如下所示:

$ sudo apt update

由於本地存儲庫索引已更新,我們現在將安裝編譯和安裝 python3.7 所需的依賴項。 為此,我們需要執行以下命令:

$ sudo apt install -y build-essential wget zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev

一旦所有依賴項都安裝完畢並準備就緒,我們將從以下位置下載最新版本的 Python 3.7 官方python網站 使用 wget 命令如下:

$ wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
--2020-03-17 16:19:44-- https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
Resolving www.python.org (www.python.org)... 151.101.8.223, 2a04:4e42:2::223
Connecting to www.python.org (www.python.org)|151.101.8.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23161893 (22M) [application/octet-stream]
Saving to: ‘Python-3.7.7.tgz’

Python-3.7.7.tgz 100%[===================>] 22.09M 2.50MB/s in 9.2s

2020-03-17 16:19:54 (2.41 MB/s) - ‘Python-3.7.7.tgz’ saved [23161893/23161893]

在編寫本教程期間,python 3.7 在最新版本 3.7.7 下發布。 因此,我們將使用 tar 命令簡單地下載並提取 tgz 文件。

$ tar -xf Python-3.7.7.tgz

從 tgz 文件中提取源代碼後,我們現在將 cd 進入目錄,然後執行配置腳本以評估是否滿足編譯所需的依賴項。 –enable-optimizations 標誌優化了 python 二進製文件並將代碼執行增加了 10-20%。

$ cd Python-3.7.7

$ ./configure --enable-optimizations
checking if the dirent structure of a d_type field... yes
checking for the Linux getrandom() syscall... yes
checking for the getrandom() function... yes
checking for pkg-config... no
checking for openssl/ssl.h in /usr/local/ssl... no
checking for openssl/ssl.h in /usr/lib/ssl... no
checking for openssl/ssl.h in /usr/ssl... no
checking for openssl/ssl.h in /usr/pkg... no
checking for openssl/ssl.h in /usr/local... no
checking for openssl/ssl.h in /usr... yes
checking whether compiling and linking against OpenSSL works... yes
checking for X509_VERIFY_PARAM_set1_host in libssl... yes
checking for --with-ssl-default-suites... python
configure: creating ./config.status
config.status: creating Makefile.pre
config.status: creating Misc/python.pc
config.status: creating Misc/python-config.sh
config.status: creating Modules/ld_so_aix
config.status: creating pyconfig.h
creating Modules/Setup
creating Modules/Setup.local
creating Makefile

一旦配置腳本成功執行,我們現在將通過執行帶有 altinstall 參數的 make 命令在我們的 Ubuntu 18.04 LTS 機器上安裝 python 3.7。 參數 altinstall 確保它不會安裝為系統默認的 python 版本。

$ sudo make altinstall
changing mode of /usr/local/bin/idle3.7 to 755
changing mode of /usr/local/bin/pyvenv-3.7 to 755
changing mode of /usr/local/bin/pydoc3.7 to 755
changing mode of /usr/local/bin/2to3-3.7 to 755
rm /usr/local/lib/python3.7/lib-dynload/_sysconfigdata_m_linux_x86_64-linux-gnu.py
rm -r /usr/local/lib/python3.7/lib-dynload/__pycache__
Creating directory /usr/local/share/man/man1
/usr/bin/install -c -m 644 ./Misc/python.man
/usr/local/share/man/man1/python3.7.1
if test "xupgrade" != "xno" ; then
case upgrade in
upgrade) ensurepip="--altinstall --upgrade" ;;
install|*) ensurepip="--altinstall" ;;
esac;
./python -E -m ensurepip
$ensurepip --root=/ ;
fi
Looking in links: /tmp/tmp06ih2lq9
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-19.2.3 setuptools-41.2.0

現在,我們可以通過如下檢查python 3.7的版本來檢查python 3.7是否安裝成功。

$ python3.7 -V
Python 3.7.7

結論

最後,我們已經在我們的 Ubuntu 18.04 LTS 機器上成功安裝了 python 3.7。 在撰寫本教程時,Python 3.7 的最新版本是 3.7.7,因此您可能希望將 3.7.7 版本替換為最新版本的發行版。 現在,我們可以輕鬆執行為 3.7 編寫的 Python 腳本和代碼。 如果您有任何問題、建議、反饋,請將它們寫在下面的評論框中。