2. 在類(lèi)Unix環(huán)境下使用Python?
2.1. 獲得并安裝Python的最新版本?
2.1.1. 在Linux中?
Python預裝在大多數Linux發(fā)行版上,并作為一個(gè)包提供給所有其他用戶(hù)。 但是,您可能想要使用的某些功能在發(fā)行版提供的軟件包中不可用。這時(shí)您可以從源代碼輕松編譯最新版本的Python。
如果Python沒(méi)有預先安裝并且不在發(fā)行版提供的庫中,您可以輕松地為自己使用的發(fā)行版創(chuàng )建包。 參閱以下鏈接:
參見(jiàn)
- https://www.debian.org/doc/manuals/maint-guide/first.en.html
對于Debian用戶(hù)
- https://en.opensuse.org/Portal:Packaging
對于OpenSuse用戶(hù)
- https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-creating-rpms.html
對于Fedora用戶(hù)
- http://www.slackbook.org/html/package-management-making-packages.html
對于Slackware用戶(hù)
2.1.2. 在FreeBSD和OpenBSD上?
FreeBSD用戶(hù),使用以下命令添加包:
pkg install python3
OpenBSD用戶(hù),使用以下命令添加包:
pkg_add -r python pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/<insert your architecture here>/python-<version>.tgz
例如:i386用戶(hù)獲取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?
如果你想自己編譯CPython,首先要做的是獲取 source 。您可以下載最新版本的源代碼,也可以直接提取最新的 clone 。 (如果你想要制作補丁,則需要克隆代碼。)
構建過(guò)程由常用命令組成:
./configure
make
make install
特定 Unix 平臺的 配置選項 和注意事項通常會(huì )詳細地記錄在 Python 源代碼樹(shù)的根目錄下的 README.rst 文件中。
警告
make install
可以覆蓋或偽裝 python3
二進(jìn)制文件。因此,建議使用 make altinstall
而不是 make install
,因為后者只安裝了 exec_prefix/bin/pythonversion
。
2.4. 雜項?
要在Unix上使用Python腳本,需要添加可執行權限,例如:
$ chmod +x script
并在腳本的頂部放置一個(gè)合適的Shebang線(xiàn)。一個(gè)很好的選擇通常是:
#!/usr/bin/env python3
將在整個(gè) PATH
中搜索Python解釋器。但是,某些Unix系統可能沒(méi)有 env 命令,因此可能需要將 /usr/bin/python3
硬編碼為解釋器路徑。
要在Python腳本中使用shell命令,請查看 subprocess
模塊。
2.5. 自定義 OpenSSL?
要使用發(fā)行商的 OpenSSL 配置和系統信任存儲庫,請找到包含
openssl.cnf
文件或符號鏈接的目錄,它位于/etc
中。 在大多數發(fā)行版上該文件是在/etc/ssl
或者/etc/pki/tls
中。 該目錄還應當包含一個(gè)cert.pem
文件和/或一個(gè)certs
目錄。$ find /etc/ -name openssl.cnf -printf "%h\n" /etc/ssl
下載、編譯并安裝 OpenSSL。 請確保你使用
install_sw
而不是install
。install_sw
的目標不會(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
使用自定義 OpenSSL 編譯 Python(參見(jiàn)配置 --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 的補丁發(fā)布版具有向下兼容的 ABI。 你不需要重新編譯 Python 來(lái)更新 OpenSSL。 使用一個(gè)新的版本來(lái)替代自定義 OpenSSL 安裝版就可以了。