2. 在 Unix 平臺上使用 Python

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

2.1.1. 在 Linux 上

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

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

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 安裝替換為較新版本即可。