使用pip或easy_install从存储库安装Python软件包

14

在我看来,处理Python包安装的最简单方式是从源代码控制系统中检出源代码,然后将符号链接添加到Python dist-packages文件夹中。

显然,由于源代码控制提供了完全的控制权,可以降级、升级到任何分支、标记,因此它非常有效。

是否有一种使用包安装程序(easy_install或pip或其他)的方法可以实现相同的功能。

easy_install通过使用setup.py install获得tar.gz并将其安装在Python2.6中的dist-packages文件夹中。是否有一种方法可以配置它,或者pip以使用源代码控制系统(SVN/GIT/Hg/Bzr)。

4个回答

26

使用pip很容易实现。例如:

pip install -e hg+http://bitbucket.org/andrewgodwin/south/#egg=South

Pip会自动克隆源代码仓库并运行 "setup.py develop" 帮助你将其安装到你的环境中(希望你的环境是一个virtualenv)。Git、Subversion、Bazaar和Mercurial都受支持。

你还可以运行 "pip freeze",它会输出你当前安装的所有软件包及其精确版本(包括开发安装的软件包,以及来自版本控制系统的精确修订)。你可以直接将这些内容放入要求文件中,并在之后运行

pip install -r requirements.txt

安装相同版本的那些软件包。


事实上,我目前使用的是你编写的带有卸载功能的 pip 版本。 - lprsd
好的。没错,我知道你已经掌握了这个,但是我想确保这个答案对任何遇到这个问题的人都可用。 - Carl Meyer

11

如果你下载或检出一个包的源代码分发版,这个版本里面有一个 "setup.py" 文件,那么,如果这个包基于 "setuptools"(也支持 easy_install),你可以进入该目录并运行:

$ python setup.py develop

它将在dist-packages中创建正确的符号链接,以便源分发中的.py文件是导入的那些文件,而不是单独安装的副本(这就是"setup.py install"所做的事情-创建单独的副本,当你编辑源代码尝试更改时,它们不会立即改变)。

如另一个响应所示,您应该尝试阅读“setuptools”文档以了解更多信息。 "setup.py develop"是一个非常有用的功能!与virtualenv一起使用它,您可以毫不费力地进行" setup.py develop",并且不会通过暂时开发的包来搞乱系统范围内的Python:

http://pypi.python.org/pypi/virtualenv

3
请注意,“pip install -e .”和“python setup.py develop”是等价的,不过前者还支持那些在其setup.py中没有使用setuptools的软件包(因为pip无论如何都会强制要求使用它;>)。 - Carl Meyer

4

easy_install支持下载指定版本。例如:

easy_install python-dateutil==1.4.0

如果没有指定版本,将安装v1.4,而最新版本1.4.1将被选择。

还支持svn检出,但使用它不会从手动版本中获得太多好处。有关更多信息,请参见手册。

能够切换到特定分支通常很少有用,除非您正在开发相关的软件包,即使如此,也不建议将其安装在site-packages中。


应该不是 python-dateutil==1.4.0(双等号),对吗? - typeoneerror

0

easy_install 也接受源代码树的 URL。至少在源代码在 Subversion 中时有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接