2. 在 Unix 平台使用 Python

2.1. 获取并安装最新版本的 Python

2.1.1. 在 Linux

Python 在大多数 Linux 分发都有预装,且如所有其它包是可用的。不管怎样,可能想要使用的某些特性在您的发行包中是不可用的。可以从源代码轻松编译最新版本的 Python。

若 Python 未预装且也不在存储库中,可以轻松制作您自己的分发包。查看下列链接:

另请参阅

https://www.debian.org/doc/manuals/maint-guide/first.en.html

对于 Debian 用户

https://en.opensuse.org/Portal:Packaging

对于 OpenSuse 用户

https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-creating-rpms.html

对于 Fedora 用户

http://www.slackbook.org/html/package-management-making-packages.html

对于 Slackware 用户

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 用户获取 2.5.1 版的 Python 使用:

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

2.1.3. 在 OpenSolaris

可以获取 Python 从 OpenCSW 。有各种可用 Python 版本,且可以安装如采用 pkgutil -i python27 .

2.2. 构建 Python

若想自己编译 CPython,首先应该做的事情是获取 source 。可以下载最新发行的源代码,或仅仅直接抓取新鲜 clone (若想要贡献补丁,将需要克隆)。

构建过程通常由下列命令组成:

./configure
make
make install
					

配置选项 和特定 Unix 平台告诫有广泛文档化在 README.rst 文件位于 Python 源代码树根下。

警告

make install 可以覆写或伪装 python3 二进制。 make altinstall 因此推荐代替 make install 由于它仅安装 exec_prefix/bin/pythonversion .

2.3. Python 相关路径和文件

这可能因本地安装约定而异; prefix ( ${prefix} ) 和 exec_prefix ( ${exec_prefix} ) 从属安装且应该被解释成 GNU 软件;他们可能相同。

例如,在大多数 Linux 系统,两者默认为 /usr .

文件/目录 含义
exec_prefix/bin/python3 推荐的解释器位置。
prefix/lib/pythonversion , exec_prefix/lib/pythonversion 包含标准模块的推荐目录位置。
prefix/include/pythonversion , exec_prefix/include/pythonversion 包含开发 Python 扩展和嵌入解释器所需包括文件的推荐目录位置。

2.4. 杂项

要在 Unix 轻松使用 Python 脚本,需要使它们可执行,如采用

$ chmod +x script
					

并在脚本顶部放置适当 Shebang 行。好的选择通常是

#!/usr/bin/env python3
					

搜索 Python 解释器在整个 PATH 。不管怎样,某些 UNICE 可能没有 env 命令,所以可能需要硬编码 /usr/bin/python3 作为解释器路径。

要在 Python 脚本中使用 Shell 命令,查看 subprocess 模块。

2.5. 自定义 OpenSSL

  1. 要使用您供应商的 OpenSSL 配置和系统信任存储,定位目录采用 openssl.cnf 文件 (或符号链接) 在 /etc 。在大多数分发文件在 /etc/ssl or /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. 构建 Python 采用自定义 OpenSSL (见配置 --with-openssl and --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 安装已足够。