购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 第三方库

Python附带了很多可爱的标准库,也就是每台运行Python语言的机器上都能用的包和模块的集合。然而,你很快会发现这还是不够用。这时,你有两个选择:

· 自己写一个包。

· 使用别人的代码。

我们不会介绍如何将你的包打包成库的细节,但是如果你遇到需要解决的问题而又不想自己写代码解决(最好的程序员都是非常懒的,宁可重用已存在被证实的代码,也不愿自己写),你可以从 Python Package Index PyPI ,地址是链接8)上找到你需要的库。当你找到想要安装的库时,你可以用一个叫作pip的工具进行安装。

你可以在操作系统命令行中用下面的命令安装第三方包,比如:

如果你直接运行这个命令,你可能会把第三方包安装到操作系统自带的Python目录中,更可能的是,遇到没有权限更新系统自带Python的错误。

Python社区的普遍共识是,你不要动操作系统自带的Python。较老的Mac OS X版本安装了Python 2.7,这么老的Python版本,我们自己编程时根本就不会去用。最好将它视为操作系统的一部分而忽略它,并始终安装全新的Python给自己用。

Python提供了一个叫作venv的工具,它可以在你的工作目录下提供给你一个迷你版本的Python,其被称为 虚拟环境 virtual environment )。当你激活这一迷你版本的Python时,与Python相关的命令将在虚拟环境中执行,而不会影响系统Python。因此当你执行pip或python命令时,根本不会用到系统Python。下面是如何使用venv的命令:

如果你使用其他操作系统,可以在链接9查看相应的激活命令。

一旦虚拟环境被激活,运行python-m pip命令将会把第三方包安装到虚拟环境中,而不会影响系统Python。你现在可以用python-m pip install mypy命令把 mypy 工具添加到当前的虚拟环境中。

在自己的计算机上,你有管理员权限,也许可以管理和使用一个集中的系统Python。在公司环境中,系统Python需要特殊的权限,使用虚拟环境就变得非常必要了。既然使用虚拟环境总是有效的,而使用集中式系统Python并不总是有效的,那么创建和使用虚拟环境通常是最佳实践,不管是用自己的计算机还是用公司的计算机。

通常我们会给每个Python项目创建不同的虚拟环境。你可以把虚拟环境保存在任何目录下,但好的实践是把它和其他项目文件放在同一个目录下。当使用 Git 等版本管理工具时,你可以编辑.gitignore文件来确保你的虚拟环境不会被上传到Git仓库。

当开始一个新项目时,我们通常会创建一个目录,然后使用cd命令进入这个目录。接下来,运行python-m venv env命令来创建一个虚拟环境。我们通常使用env这样简单的名称,有时候也可能会使用复杂点的名称,比如CaseStudy39。

最后,我们可以使用上面代码中最后两行中的一行(取决于你使用的操作系统)激活虚拟环境。

我们每次需要运行某个项目时,先使用cd命令进入那个目录,执行激活命令(source或activate.bat)激活相应的虚拟环境。当切换到其他项目时,可以使用deactivate命令退出当前的虚拟环境。

虚拟环境是让你将第三方依赖与Python标准库分隔开的最好的方法。不同的项目依赖于特定库的不同版本是很常见的(例如,老的网站可能运行的是Django 1.8,而新的网站可能运行在Django 2.1上)。让不同的项目拥有不同的虚拟环境,使其更容易运行在不同版本的Django上。除此之外,如果你想要使用不同的工具安装同一个包,虚拟环境还能防止系统安装的包和pip安装的包之间产生冲突。最后,虚拟环境可以避免系统自带Python的相关权限问题。

有一些有效管理虚拟环境的第三方包,包括virtualenv、pyenv、virtualenvwrapper和conda等。如果你做的是数据科学相关工作,你可能需要使用conda,因为它更易于安装与数据科学相关的更复杂的包。不同的应用场景导致了不同的管理庞大的Python第三方包生态的工具。 vKfA00oORzpc0hZ3BwHHHFnHRkH5qxb2coLZCgNlsyPmOqd2zoZDkm139G8BhtkN

点击中间区域
呼出菜单
上一章
目录
下一章
×