The Hitchhiker's Guide to Python
Python最佳实践指南!
您好,地球人!欢迎来到Python最佳实践指南。
这是一份活着的、会呼吸的指南。 如果您有意一起贡献, 在GitHub fork 我!
这份人工编写的指南旨在为Python初学者和专家提供一个关于Python安装、配置、和日常使用的最佳实践手册。
这份指南是 主观的 ,它与Python官方文档几乎,但不是完全 不同 。您在这不会找到每个Python web框架的列表。相
反,您会发现一份优秀的简明列表,包含有强烈推荐的选项。
注解:
使用 Python 3 是 高度 优先于 Python 2。如果您发现自己 仍然 在生产环境中使用 Python 2,请考虑升级您
的应用程序和基础设施。如果您正在使用 Python 3,恭喜您 —— 您确实有很好的品味。 ——Kenneth Reitz
让我们开始吧!但首先,让我们确保您拥有这次旅行需要的”浴巾”。(译者注:towel 浴巾的梗引自著名科幻小说《银
河系漫游指南》,大概是说先准备好不起眼但很重要的东西。)
Python入门
Python新手?让我们正确地设置您的Python环境:
选择一个 Python 解释器(3 vs. 2)
Python的现状 (2 vs 3)
当选择Python解释器的时候,一个首先要面对的问题是:“我应该选择Python 2还是Python 3?” 答案并不像人们想象
1
The Hitchhiker's Guide to Python
的那么明显。
现状的基本要点如下:
1.
2.
3.
4.
如今大部分生产应用使用 Python 2.7。
Python 3 已准备好用于生产应用的部署。
Python 2.7 直到 2020 前只会得到必要的安全更新 [1]。
“Python” 涵盖了 Python 3 和 Python 2。
建议
注解:
使用 Python 3 是 高度 优先于 Python 2。如果您发现自己 仍然 在生产环境中使用 Python 2,请考虑升级您
的应用程序和基础设施。如果您正在使用 Python 3,恭喜您 —— 您确实有很好的品味。 —Kenneth Reitz
那我直言不讳:
将 Python 3 用于新的 Python 应用程序。
如果您是第一次学习 Python,熟悉 Python 2.7 将是非常有用的,但学习 Python 3 更有用。
两者都学。它们都是 “Python”。
已经构建的软件通常依赖于 Python 2.7。
如果您正在编写一个新的开源 Python 库,最好同时为 Python 2 和 3 编写。若新库只支持 Python 3 会是一项政治
声明,并将疏远您的许多用户。这不是一个问题 —— 慢慢地,在未来三年内,这种情况会减少。
所以.... 3?
如果您想选择一种Python的解释器,您又不是固执己见的人,我推荐您用最新的Python 3.x,因为每个版本都带来了
新的改进了的标准库模块、安全性以及bug修复。进步就是进步。
鉴于此,如果您有一个强有力的理由只用Python 2,比如Python 3 没有足够能替代的Python 2 的特有库,或者您(像
我)非常喜而且受Python 2启发。
查看 Can I Use Python 3? 来看看是否有您依赖的软件阻止您用Python 3。
延伸阅读
写 能够同时兼容Python 2.6,2.7,和Python 3的代码 是可能的。这包括从简单到困难的各种难度,取决于您所写软件
的类型;如果您是初学者,其实有更重要的东西要操心。请注意,Python 2.6 是生命周期结束的上游,所以您不应该
试着编写兼容2.6的代码,除非您被专门安排做这件事。
实现
当人们谈论起 Python,他们不仅是在说语言本身,还包括其CPython实现。 Python 实际上是一个可以用许多不同的
方式来实现的语言规范。
CPython
CPython 是Python的参考实现,用C编写。它把Python代码编译成中间态的字节码,然后由虚拟机解释。CPython为
Python包和C扩展模块提供了最大限度的兼容。
如果您正在写开源的Python代码,并希望有尽可能广泛的用户,用CPython是最好的。使用依赖C扩展的包,CPython
是您唯一的选择。
所有版本的Python语言都用C实现,因为CPython是参考实现。
PyPy
PyPy 是用RPython实现的解释器。RPython是Python的子集,具有静态类型。这个解释器的特点是即时编译,支持多
重后端(C, CLI, JVM)。
2
The Hitchhiker's Guide to Python
PyPy旨在提高性能,同时保持最大兼容性(参考CPython的实现)。
如果您正在寻找提高您的Python代码性能的方法,值得试一试PyPy。在一套的基准测试下,它目前比CPython的速度
快超过5倍 。
PyPy支持Python 2.7。PyPy3 [2],发布的Beta版,支持Python 3。
Jython
Jython 是一个将Python代码编译成Java字节码的实现,运行在JVM (Java Virtual Machine) 上。另外,它可以像是用
Python模块一样,导入并使用任何Java类。
如果您需要与现有的Java代码库对接或者基于其他原因需要为JVM编写Python代码,那么 Jython是最好的选择。
Jython现在支持到Python 2.7 [3]。
IronPython
IronPython 是一个针对 .NET 框架的Python实现。它可以用Python和.NET framework的库,也能将Python代码暴露
给给.NET框架中的其他语言。
Python Tools for Visual Studio 直接集成了 IronPython到Visual Studio开发环境中,使之成为Windows开发者的理想
选择。
IronPython支持Python 2.7 [4]。
PythonNet
Python for .NET 是一个近乎无缝集成的,提供给本机已安装的Python .NET公共语言运行时(CLR)包。它采取与
IronPython (见上文)相反的方法,与其说是竞争,不如说是互补。
PythonNet与Mono相结合使用,通过.NET框架,能使Python在非windows系统上(如OS X和Linux)完成操作。它可
以在除外IronPython的环境中无冲突运行。
PythonNet支持Python 2.3到2.7 [5]。
[1] https://www.python.org/dev/peps/pep-0373/#id2
[2] http://pypy.org/compat.html
[3] https://hg.python.org/jython/file/412a8f9445f7/NEWS
[4] http://ironpython.codeplex.com/releases/view/81726
[5] http://pythonnet.github.io/readme.html
正确地在您的系统上安装 Python
正确地安装 Python
3
The Hitchhiker's Guide to Python
通常来说,您所使用的操作系统自带安装好的Python。
如此可以省却自己安装、配置 Python 的过程。话虽如此,我还是强烈建议各位,在正式开始 Python 应用开发前,安
装接下来教程中所介绍的工具和库。特别要提到如 setuptools, pip和 virtualenv这样的工具——它们将简化安装和使用
Python第三方库的流程。
注解:
使用 Python 3 的优先级高于Python2。如果您发现自己 仍然 在生产环境中使用 Python 2,请考虑升级您的
应用程序和基础设施。如果您正在使用 Python 3,恭喜您 —— 您确实有很好的品味。 —Kenneth Reitz
安装指南
这份指南重温了 Python 作为开发工具的正确安装方法,也包括 setuptools, pip 和 virtualenv 等工具的安装。
Python 3 安装指南
MacOS 上的 Python 3.
Microsoft Windows 上的 Python 3.
Linux 上的 Python 3.
传统 Python 2 安装指南
MacOS 上的 Python 2.
Microsoft Windows 上的 Python 2.
Linux 上的 Python 2.
在Mac OS X上安装Python 3
4
The Hitchhiker's Guide to Python
最新版本的Mac OS X,High Sierra, 自带Python 2.7。
您不必安装和配置即可直接使用Python 2。本教程用来说明Python 3的安装。
OS X自带的Python版本更适合用于学习而不是开发。因为版本与Python官网发布的 官方最新稳定版本 相比可能已经
过时。
现在就开始吧!
跟着我一起安装真实版本的Python吧。
在正式安装之前,应先安装C编译器。最快的方式是运行 xcode-select --install 来安装Xcode命令行工具。您也可
以从Mac应用商店下载完全版的 XCode,或者更轻巧的 OSX-GCC-Installer 。
注解:
如果已经安装了XCode,请不要再安装 OSX-GCC-Installer。两者结合可能会引发难以诊断的问题。
注解:
执行XCode的全新安装完成后,须在终端执行下述命令 xcode-select --install 来安装命令行工具。
尽管OS X系统附带了大量UNIX工具,熟悉Linux系统的人员使用时会发现缺少一个重要的组件——合适的包管理工
具, Homebrew 正好填补了这个空缺。
安装 Homebrew 只需打开 终端 或个人常用的终端模拟器并运行:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
运行这段脚本将列出它会引起的改变,并在安装开始前提示您。安装完成Homebrew后,需将其所在路径插入到 PATH
环境变量的最前面,即在您所登录用户的 ~/.profile 文件末尾加上这一行:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
5
The Hitchhiker's Guide to Python
接下来可以开始安装Python 3:
$ brew install python
这将持续几分钟。
Pip
Homebrew 会为您安装 pip3 。
pip3 是Homebrew版Python 3的 pip 的别名。
使用Python 3
这个时候,在您系统上可能Python 2.7也是可用的。可能 Homebrew 版本的Python 2 和Python 3都安装了。
$ python
将打开通过HomeBrew安装的Python解释器。
$ python2
将会打开使用Homebrew安装的Python 2解释器(如果有)。
$ python3
将会打开使用Homebrew安装的Python 3解释器(如果有)。
如果Homebrew版的Python 2安装了,pip2 指向Python 2。如果Homebrew版的Python 3安装了,pip 指向Python 3。
本指南的其余部分假定 python 指 Python 3。
# 我安装Python 3了吗?
$ python --version
Python 3.6.4 # Success!
# If you still see 2.7 ensure in PATH /usr/local/bin/ takes pecedence over /usr/bin/
Pipenv & 虚拟环境
下一步安装 Pipenv,然后就可以安装依赖关系并管理虚拟环境。
虚拟环境工具通过为不同项目创建专属的 Python 虚拟环境,以实现其依赖的库独立保存在不同的路径。这解决了“项
目X依赖于 1.x 版本,但项目 Y 需要 4.x”的难题,并且维持全局的 site-packages 目录干净、易管理。
举个例子,通过这个工具可以实现依赖 Django 1.10 的项目与依赖 Django 1.8 的项目共存。
所以,向前!进入到 Pipenv & 虚拟环境 文档中!
该页是 另一份指南 的混合版本,可通过同一份许可获取。
在Windows上安装Python 3
6
The Hitchhiker's Guide to Python
首先,遵照 Chocolatey 的安装指引。它是 Windows 7+ 的社区系统包管理器(很像Mac OSX上的Homebrew)。
完成之后,安装Python 3会非常简单,因为Chocolatey将Python 3作为默认设置。
choco install python
一旦您运行了上述命令,您应该能够直接从控制台启动Python。(Chocolatey非常棒,会自动将Python添加到您的系
统路径中。)
Setuptools + Pip
setuptools 和 pip 是两个最重要的第三方Python包。
安装完成后,您可以使用单个命令下载、安装和卸载任何兼容的Python应用包。还可以轻松地这种网络安装的方式加
入到自己开发的Python应用中。
所有受支持的Python 3版本都包含pip,因此请确保它是最新的:
python -m pip install -U pip
Pipenv & 虚拟环境
下一步安装 Pipenv,然后就可以安装依赖关系并管理虚拟环境。
虚拟环境工具通过为不同项目创建专属的 Python 虚拟环境,以实现其依赖的库独立保存在不同的路径。这解决了“项
目X依赖于 1.x 版本,但项目 Y 需要 4.x”的难题,并且维持全局的 site-packages 目录干净、易管理。
举个例子,通过这个工具可以实现依赖 Django 2.0 的项目与依赖 Django 1.8 的项目共存。
所以,向前!进入到 Pipenv & 虚拟环境 文档中!
该页是 另一份指南 的混合版本,可通过同一份许可获取。
7
The Hitchhiker's Guide to Python
在Linux上安装Python 3
这份文档描述了如何在Ubuntu Linux机器上安装Python 3.6。
想要获取已安装的Python 3版本号,可以通过终端运行命令:
$ python3 --version
如果您使用的是Ubuntu 16.10或更新,可以通过以下命令简单地安装Python 3.6:
$ sudo apt-get update
$ sudo apt-get install python3.6
如果您使用的是其他版本的Ubuntu(比如LTS发行版),我们推荐使用 deadsnakes PPA 来安装 Python 3.6:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.6
如果您使用的是其他Linux发行版,有可能已经预装了Python 3。如果没有,使用发行版的包管理器。比如,在Fedora
上您可以使用 dnf:
$ sudo dnf install python3
注意,如果 python3 包的版本不够新,还有其他方式安装更新的版本,这取决于所在的发行版。比如在Fedora 25上安
装 python36 包来获取Python 3.6。如果您是Fedora用户,您可能想阅读 Fedora中可用的多Python版本 。
使用Python 3
这个时候,在您系统上可能Python 2.7也是可用的。
$ python
8