2. 在 Unix 平臺上使用 Python

2.1. 獲取和安裝最新版本的 Python

2.1.1. 在 Linux 上

大多數 Linux 發行版都預裝了 Python,並且在所有其他發行版上都可以作為一個軟體包使用。但是,你可能想使用的某些功能在你的發行版的軟體包中可能不可用。你可以從原始碼編譯最新版本的 Python。

如果最新版本的 Python 沒有預裝,也沒有在軟體倉庫中,你可以為自己的發行版製作軟體包。請檢視以下連結:

2.1.1.1. 安裝 IDLE

在某些情況下,IDLE 可能未包含在你的 Python 安裝中。

  • 對於 Debian 和 Ubuntu 使用者

    sudo apt update
    sudo apt install idle
    
  • 對於 Fedora、RHEL 和 CentOS 使用者

    sudo dnf install python3-idle
    
  • 對於 SUSE 和 OpenSUSE 使用者

    sudo zypper install python3-idle
    
  • 對於 Alpine Linux 使用者

    sudo apk add python3-idle
    

2.1.2. 在 FreeBSD 和 OpenBSD 上

  • FreeBSD 使用者,要新增軟體包請使用

    pkg install python3
    
  • OpenBSD 使用者,要新增軟體包請使用

    pkg_add -r python
    
    pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/<insert your architecture here>/python-<version>.tgz
    

    例如,i386 使用者可使用以下命令獲取 Python 2.5.1 版本

    pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2.tgz
    

2.2. 構建 Python

如果你想自己編譯 CPython,首先應該獲取原始碼。你可以下載最新發布版的原始碼,或者直接獲取一個全新的克隆。(如果你想貢獻補丁,則需要一個克隆。)

構建過程包含通常的命令

./configure
make
make install

特定 Unix 平臺的配置選項和注意事項在 Python 原始碼樹根目錄的 README.rst 檔案中有詳細說明。

警告

make install 可能會覆蓋或偽裝 python3 二進位制檔案。因此,推薦使用 make altinstall 來替代 make install,因為它只安裝 exec_prefix/bin/pythonversion

2.4. 雜項

要在 Unix 上方便地使用 Python 指令碼,你需要使其可執行,例如使用

$ chmod +x script

並在指令碼頂部放置一個適當的 Shebang 行。一個通常不錯的選擇是

#!/usr/bin/env python3

這會在整個 PATH 中搜索 Python 直譯器。然而,一些 Unix 系統可能沒有 env 命令,因此你可能需要將直譯器路徑硬編碼為 /usr/bin/python3

要在 Python 指令碼中使用 shell 命令,請檢視 subprocess 模組。

2.5. 自定義 OpenSSL

  1. 要使用你的供應商的 OpenSSL 配置和系統信任儲存,請在 /etc 目錄中找到包含 openssl.cnf 檔案或符號連結的目錄。在大多數發行版中,該檔案位於 /etc/ssl/etc/pki/tls。該目錄也應該包含一個 cert.pem 檔案和/或一個 certs 目錄。

    $ find /etc/ -name openssl.cnf -printf "%h\n"
    /etc/ssl
    
  2. 下載、構建和安裝 OpenSSL。請確保你使用的是 install_sw 而不是 installinstall_sw 目標不會覆蓋 openssl.cnf

    $ curl -O https://www.openssl.org/source/openssl-VERSION.tar.gz
    $ tar xzf openssl-VERSION
    $ pushd openssl-VERSION
    $ ./config \
        --prefix=/usr/local/custom-openssl \
        --libdir=lib \
        --openssldir=/etc/ssl
    $ make -j1 depend
    $ make -j8
    $ make install_sw
    $ popd
    
  3. 使用自定義 OpenSSL 構建 Python(請參閱 configure 的 --with-openssl--with-openssl-rpath 選項)

    $ pushd python-3.x.x
    $ ./configure -C \
        --with-openssl=/usr/local/custom-openssl \
        --with-openssl-rpath=auto \
        --prefix=/usr/local/python-3.x.x
    $ make -j8
    $ make altinstall
    

備註

OpenSSL 的補丁版本具有向後相容的 ABI。你不需要重新編譯 Python 來更新 OpenSSL。用新版本替換自定義的 OpenSSL 安裝就足夠了。