2. 在 Unix 平臺上使用 Python

2.1. 獲得並安裝 Python 的最新版本

2.1.1. 在 Linux 上

在大多數 Linux 發行版上會預先安裝 Python,並作為一個套件提供給所有其他使用者。但是發行版提供的套件可能沒有你想要使用的某些功能,這時你可以選擇從原始碼編譯最新版本的 Python,做法相當容易。

如果 Python 沒有預先安裝,並且不在發行版提供的儲存庫 (repository) 中,你可以輕鬆地為自己使用的發行版建立套件。參閱以下連結:

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.1.3. 在 OpenSolaris 系統上

你可以從 OpenCSW 獲取、安裝及使用各種版本的 Python。比如 pkgutil -i python27

2.2. 建置 Python

If you want to compile CPython yourself, first thing you should do is get the source. You can download either the latest release's source or just grab a fresh clone. (If you want to contribute patches, you will need a clone.)

建置過程由幾個常用命令組成:

./configure
make
make install

特定 Unix 平臺的配置選項和注意事項通常會詳細地記錄在 Python 原始碼樹 (source tree) 根目錄下的 README.rst 檔案中。

警告

make install 可以覆蓋或偽裝 python3 二進位制檔案。因此,建議使用 make altinstall 而不是 make install,因為它只安裝 exec_prefix/bin/pythonversion

2.4. 雜項

要在 Unix 上使用 Python 腳本,你需要讓他們是可執行的 (executable),例如用

$ chmod +x script

並在腳本的頂部放一個合適的 Shebang。以下通常是個好選擇:

#!/usr/bin/env python3

將在整個 PATH 中搜索 Python 直譯器。然而某些 Unix 系統可能沒有 env 命令,因此你可能需要將 /usr/bin/python3 寫死 (hardcode) 成直譯器路徑。

要在 Python 腳本中使用 shell 命令,請見 subprocess 模組。

2.5. 客製化 OpenSSL

  1. 要使用你所選擇發行商 (vendor) 的 OpenSSL 配置和系統信任儲存區 (system trust store),請找到包含 openssl.cnf 檔案的目錄或位於 /etc 的符號連結 (symlink)。在大多數發行版上,該檔案會是在 /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(參見配置 --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 的修補釋出版 (patch releases) 具有向後相容的 ABI。你不需要重新編譯 Python 來更新 OpenSSL。使用一個新的版本來替代客製化 OpenSSL 安裝版就可以了。