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.fedoraproject.org/en-US/package-maintainers/Packaging_Tutorial_GNU_Hello/
对于Fedora用户
- https://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用户获�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¶
è¦�使用å�‘行商的 OpenSSL é…�置和系统信任å˜å‚¨åº“,请找到包å�«
openssl.cnf文件或符å�·é“¾æŽ¥çš„目录,它ä½�于/etcä¸ã€‚ 在大多数å�‘行版上该文件是在/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 (�考�置
--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 安装版就å�¯ä»¥äº†ã€‚