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,首先��的是获� �代�。 你�以下载最新�布版的 source 或是直接抓�最新的 clone。 (如果你想�贡献补�,那么你就必须先 clone。)

构建过程由常用命令组�:

./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 �置和系统信任存储库,请找到包� openssl.cnf 文件或符�链接的目录,它�于 /etc 中。 在大多数�行版上该文件是在 /etc/ssl 或者 /etc/pki/tls 中。 该目录还应当包�一个 cert.pem 文件和/或一个 certs 目录。

    $ find /etc/ -name openssl.cnf -printf "%h\n"
    /etc/ssl
    
  2. 下载�编译并安装 OpenSSL。 请确�你使用 install_sw 而�是 install。 install_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 的补��布版具有�下兼容的 ABI。 你�需��新编译 Python �更新 OpenSSL。 使用一个新的版本�替代自定义 OpenSSL 安装版就�以了。