2. 在類Unix環(huán)境下使用Python?

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

2.1.1. 在Linux中?

Python預(yù)裝在大多數(shù)Linux發(fā)行版上,并作為一個(gè)包提供給所有其他用戶。 但是,您可能想要使用的某些功能在發(fā)行版提供的軟件包中不可用。這時(shí)您可以從源代碼輕松編譯最新版本的Python。

如果Python沒(méi)有預(yù)先安裝并且不在發(fā)行版提供的庫(kù)中,您可以輕松地為自己使用的發(fā)行版創(chuàng)建包。 參閱以下鏈接:

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系統(tǒng)上?

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

2.2. 構(gòu)建Python?

如果你想自己編譯CPython,首先要做的是獲取 source 。您可以下載最新版本的源代碼,也可以直接提取最新的 clone 。 (如果你想要制作補(bǔ)丁,則需要克隆代碼。)

構(gòu)建過(guò)程由常用命令組成:

./configure
make
make install

特定 Unix 平臺(tái)的 配置選項(xiàng) 和注意事項(xiàng)通常會(huì)詳細(xì)地記錄在 Python 源代碼樹的根目錄下的 README.rst 文件中。

警告

make install 可以覆蓋或偽裝 python3 二進(jìn)制文件。因此,建議使用 make altinstall 而不是 make install ,因?yàn)楹笳咧话惭b了 exec_prefix/bin/pythonversion 。

2.4. 雜項(xiàng)?

要在Unix上使用Python腳本,需要添加可執(zhí)行權(quán)限,例如:

$ chmod +x script

并在腳本的頂部放置一個(gè)合適的Shebang線。一個(gè)很好的選擇通常是:

#!/usr/bin/env python3

將在整個(gè) PATH 中搜索Python解釋器。但是,某些Unix系統(tǒng)可能沒(méi)有 env 命令,因此可能需要將 /usr/bin/python3 硬編碼為解釋器路徑。

要在Python腳本中使用shell命令,請(qǐng)查看 subprocess 模塊。

2.5. 自定義 OpenSSL?

  1. 要使用發(fā)行商的 OpenSSL 配置和系統(tǒng)信任存儲(chǔ)庫(kù),請(qǐng)找到包含 openssl.cnf 文件或符號(hào)鏈接的目錄,它位于 /etc 中。 在大多數(shù)發(fā)行版上該文件是在 /etc/ssl 或者 /etc/pki/tls 中。 該目錄還應(yīng)當(dāng)包含一個(gè) cert.pem 文件和/或一個(gè) certs 目錄。

    $ find /etc/ -name openssl.cnf -printf "%h\n"
    /etc/ssl
    
  2. 下載、編譯并安裝 OpenSSL。 請(qǐng)確保你使用 install_sw 而不是 installinstall_sw 的目標(biāo)不會(huì)覆蓋 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(參見(jiàn)配置 --with-openssl--with-openssl-rpath 選項(xiàng))

    $ 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 的補(bǔ)丁發(fā)布版具有向下兼容的 ABI。 你不需要重新編譯 Python 來(lái)更新 OpenSSL。 使用一個(gè)新的版本來(lái)替代自定義 OpenSSL 安裝版就可以了。