目录 | 上一节 (9.1 包) | [下一节 (9.3 版本散发)]()
9.2 第三方模块
Python 领有一个蕴含各种内置模块的大型库( 自带电池 (batteries included))(译注:“自带电池”来自于官网文档的翻译,意为“功能齐全”)。
甚至还有很多第三方模块(能够应用)。请到 Python 包索引(PyPi)查看,或者应用谷歌搜寻特定主题。
对于 Python 而言,如何解决第三方依赖关系是一个一直演变的主题。本节仅仅涵盖一些基础知识,帮忙你理解它们是如何工作的。
模块搜寻门路
sys.path
是一个列表,蕴含所有 import
语句要查看的目录。查看 sys.path
:
>>> import sys
>>> sys.path
... look at the result ...
>>>
如果导入的内容不在目录中。那么将会触发 ImportError
异样。
规范库模块
Python 规范库中的模块通常来自于 `/usr/local/lib/python3.6′ 之类的地位。能够通过一个简短的测试来确定模块来自于哪里:
>>> import re
>>> re
<module 're' from '/usr/local/lib/python3.6/re.py'>
>>>
在交互式解释器(REPL)中查看模块的地位是一个很好的调试技巧。交互式解释器将会显示模块所在的地位。
第三方模块
第三方模块通常位于专门的目录 site-packages
中。如果执行与上述雷同的步骤,能够看到第三方模块所在的地位:
>>> import numpy
>>> numpy
<module 'numpy' from '/usr/local/lib/python3.6/site-packages/numpy/__init__.py'>
>>>
同样,如果要弄清楚导入的第三方模块为什么没有像预期那样工作,那么查看模块的地位是一个很好的调试技巧。
装置模块
装置第三方模块最罕用的技术是应用 pip
。示例:
bash % python3 -m pip install packagename
此命令会下载包并将包装置到 site-packages
目录中。
问题
-
你可能正在应用你不能间接管制的 Python。
- 企业认可的 Python
- 操作系统自带的 Python
- 你可能没有权限在计算机中装置全局包
- 可能还有其它依赖
虚拟环境
对于包装置问题,一个常见的解决方案是为本人创立所谓的“虚拟环境”。天然,创立虚拟环境的形式不止这一种——实际上,有好几种相互竞争的工具和技术。如果你正在应用规范形式装置的 Python,能够尝试输出以下代码创立虚拟环境:
bash % python -m venv mypython
bash %
稍等片刻后,你将领有一个新目录 mypython
,该目录装置了你本人的 Python。在 mypython
目录中,能够找到 bin/
目录(Unix 零碎)或者 Scripts/
目录(Windows 零碎)。运行 bin/
目录下的 activate
脚本会“激活“对应的 Python,使其成为 shell 的默认 python
命令。示例:
bash % source mypython/bin/activate
(mypython) bash %
当初,你能够从这里开始装置本人的 Python 包了。示例:
(mypython) bash % python -m pip install pandas
...
通常,为了试验和试用不同的包,能够应用虚拟环境。另一方面,如果你正在创立一个利用并且它有特定的包依赖关系,那么问题会稍有不同。
解决利用中的第三方依赖
如果你曾经编写了一个利用,并且该利用具备特定的第三方依赖,那么创立并保留一个包含你本人的代码及其依赖的环境将会是一个挑战。可悲的是,这始终是一个十分凌乱和频繁变动的畛域。即便到当初,它仍在持续演变。
我不想向你提供必定会过期的信息,倡议查阅 Python 打包用户指南。
练习
练习 9.4:创立虚拟环境
看看你是否能够像下面一样创立一个虚拟环境并在虚拟环境中装置 pandas。
目录 | 上一节 (9.1 包) | [下一节 (9.3 版本散发)]()
注:残缺翻译见 https://github.com/codists/practical-python-zh