对于这样一个基本问题,我很抱歉,我无法通过谷歌找到我能理解的答案。
通俗地说,python 库到底是什么?看起来像是您下载或导入并移动到某个文件夹以在 python 中添加特定功能的东西?
如果我为 python 下载一个库,它会进入 /usr/lib 吗?
任何帮助将不胜感激我真的迷失了这个!
对于这样一个基本问题,我很抱歉,我无法通过谷歌找到我能理解的答案。
通俗地说,python 库到底是什么?看起来像是您下载或导入并移动到某个文件夹以在 python 中添加特定功能的东西?
如果我为 python 下载一个库,它会进入 /usr/lib 吗?
任何帮助将不胜感激我真的迷失了这个!
在 Python 中,术语“库”是指标准库时最常用的 。标准库随 Python 一起安装,使其模块可靠地用于任何 Python 代码。更一般意义上的代码“库”在 Python 中具有更具体的名称。
可以import
编入 Python 代码的模块化代码组件称为模块。Python 标准库本身就是一个经过精心策划的、有据可查的模块的集合。模块由 Python(有时是编译的二进制)代码组成;它们与元数据、安装参数、测试代码等一起打包到zip
称为packages的档案中。
包是安装程序下载和安装的文件。 easy_install
而且,更好pip
的是,是两个最常见的软件包安装程序。这些是用户友好的命令行实用程序。
例如sh
,要安装一个包,你会这样做
$ pip install sh
根据您的操作系统,您可能希望在该命令前加上sudo
; 否则,我相信您最终只会安装模块供您自己使用,而不是在系统范围内安装。
有关如何运行的信息,请参阅下面的安装部分。pip
包用于为模块所包含的源代码的安装、测试、使用和维护提供工具。一个复杂的包可能包括多个模块。一些软件包将安装命令行实用程序脚本,例如/usr/bin
使用模块代码。
包通常(如果它们足够成熟以供广泛使用)通过Python 包索引分发。这是pip
查找和下载软件包的地方。
如果您正在寻找一段代码来做一些特定的事情,请尝试在 PyPI 上搜索它。您也可以使用$ pip search '*text to search for in package descriptions*'
. 它将为您搜索 PyPI 数据库并显示结果。
如上所述,有两种不同的命令行实用程序提供了方便的方式来下载和安装 Python 包。 pip
是两者中更好的一个,并且需要您setuptools
安装软件包。 easy_install
,另一个实用程序,作为setuptools
.
setuptools
包setuptools
PyPI 的包文档中提供了安装说明。基本上你下载文件ez_setup.py
并运行它:
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ [sudo] python get-pip.py
一般来说,库是一段可重用的代码。大多数有用的库都集中在一个主题上,例如 FTP、加密、API 包装器、气候模型、数据库访问等等。
Python 附带了一个丰富的标准库,带有一组核心任务。并且有数千个用于更特殊目的的库供您使用,这些库不包含在标准发行版中。
(注意 Python 术语区分module 和 package。)
编写代码后,需要对其进行打包,这涉及到一些规则。事实上,python 打包是一个相当广泛的话题,正如本打包指南的广度所示。
一旦代码片段具有某种标准的形式和目录布局,就可以将其称为包。
有些人在 python 包索引上发布他们的包:
Python Package Index 是 Python 编程语言的软件存储库。目前这里有 34150 个包。
从那里任何人都可以安装一个包:
$ pip install some-neato-package
现在,代码的确切位置取决于您的系统设置。/usr/lib/python3.2
如果您使用一些常用工具,例如virtualenv和virtualenvwrapper ,它可能会在下面或完全不同的地方。
如果一切顺利,您将在几分钟内将许多人月的工作触手可及,因为您 - 一旦安装了一个包 - 就可以在您的代码中使用该库:
$ mkvirtualenv throwaway
New python executable in throwaway/bin/python
Installing distribute.......................................done.
Installing pip................done.
(throwaway) $ pip install requests # HTTP library
Downloading/unpacking requests
...
(throwaway) $ python
>>> import requests, re
>>> r = requests.get('http://stackoverflow.com/q/18474784/89391')
>>> value, unit = re.search('(\d+) ([a-zA-Z]+) ago', r.text).groups()
>>> print('You posted this question %s %s ago.' % (value, unit))
You posted this question 26 mins ago.
我假设您正在谈论模块,这是收集功能集和/或自定义数据类型的一种手段。它们的存在是为了丰富 Python 标准库,该库已经包含 200 多个包和模块(可以通过输入help('modules')
Python 解释器来列出它们。模块旨在被您的程序导入和使用。作为仅供参考,提供相关功能的模块可以组合成一个包。
Pypi,即 Python 索引包,是此类第三方模块的存储库。您可能会为您想要完成的任何任务找到一个现有模块,只需搜索 Pypi 以查找您感兴趣的内容。
您有两种安装方式:
gunzip -c foo-1.0.tar.gz | tar xf -# unpacks into directory foo-1.0
cd foo-1.0
python setup.py install
pip
在 virtualenv 环境中安装它们(virt_env)user@computer$ pip install SomePackage==1.0
Unix/Linux 上的典型安装路径是prefix/lib/pythonX.Y/site-packages
,其中前缀默认为/usr
。在 Windows 上,它的安装路径是prefix\Lib\site-packages
,其中前缀是C:\Program Files\Python
.
Python 库被称为“模块”。这些模块以不同对象或功能的形式提供常用功能。例如,有一个模块具有您可以在代码中使用的功能来测试硬盘驱动器上是否存在文件;有些模块具有实现网络服务器或网络浏览器功能的功能;有处理图像的模块;有创建图表和图形的模块;有解析 XML 或 HTML 文件的模块;等等
这个想法是很多人可能想用 python 做一些事情——例如读取 HTML 文件。每个人都可以自己编写 python 代码来做到这一点,但这很耗时。因此,聪明的人编写了一个模块,该模块以定义明确且文档齐全的方式执行此操作。其他人只需导入该模块并使用它。然后底层的工作(例如读取一个 HTML 文件)就完成了,你就可以使用 HTML 文件来做任何你想做的聪明的工作了。