2. 在 Unix 平台上使用 Python¶
2.1. 获取和安装最新版本的 Python¶
2.1.1. 在 Linux 上¶
大多数 Linux 发行版都预装了 Python,并且在所有其他发行版上都可以作为一个软件包使用。但是,你可能想使用的某些功能在你的发行版的软件包中可能不可用。你可以从源代码编译最新版本的 Python。
如果最新版本的 Python 没有预装,也没有在软件仓库中,你可以为自己的发行版制作软件包。请查看以下链接:
参见
- https://www.debian.org/doc/manuals/maint-guide/first.en.html
(Debian 用户)
- https://en.opensuse.org/Portal:Packaging
(OpenSuse 用户)
- https://docs.fedoraproject.org/en-US/package-maintainers/Packaging_Tutorial_GNU_Hello/
(Fedora 用户)
- https://slackbook.org/html/package-management-making-packages.html
(Slackware 用户)
2.1.1.1. 安装 IDLE¶
在某些情况下,IDLE 可能未包含在你的 Python 安装中。
对于 Debian 和 Ubuntu 用户
sudo apt update sudo apt install idle
对于 Fedora、RHEL 和 CentOS 用户
sudo dnf install python3-idle
对于 SUSE 和 OpenSUSE 用户
sudo zypper install python3-idle
对于 Alpine Linux 用户
sudo apk add python3-idle
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¶
要使用你的供应商的 OpenSSL 配置和系统信任存储,请在
/etc
目录中找到包含openssl.cnf
文件或符号链接的目录。在大多数发行版中,该文件位于/etc/ssl
或/etc/pki/tls
。该目录也应该包含一个cert.pem
文件和/或一个certs
目录。$ find /etc/ -name openssl.cnf -printf "%h\n" /etc/ssl
下载、构建和安装 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
使用自定义 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 安装就足够了。