【问题标题】:Python package install using pip or easy_install from repos使用 pip 或来自 repos 的 easy_install 安装 Python 包
【发布时间】:2010-11-05 06:08:03
【问题描述】:

到目前为止,对我来说,处理 python 包安装的最简单方法是从源代码控制系统中检查源代码,然后在 python dist-packages 文件夹中添加一个符号链接。

显然,由于源代码控制提供了对降级、升级到任何分支、标记的完整控制,因此效果非常好。

有没有办法使用其中一个包安装程序(easy_install 或 pip 或其他),可以实现相同的效果。

easy_install 获取 tar.gz 并使用 setup.py install 安装它们,它安装在 python2.6 的 dist-packages 文件夹中。有没有办法配置它,或者 pip 使用源版本控制系统(SVN/GIT/Hg/Bzr)来代替。

【问题讨论】:

    标签: python svn version-control easy-install pip


    【解决方案1】:

    使用pip 这很容易。例如:

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

    Pip 将自动克隆源代码库并运行“setup.py develop”以便您将其安装到您的环境中(希望是virtualenv)。支持 Git、Subversion、Bazaar 和 Mercurial。

    然后您也可以运行“pip freeze”,它将输出您当前安装的软件包及其确切版本的列表(包括,对于开发安装,来自 VCS 的确切修订版)。您可以将其直接放入需求文件中,然后运行

    pip install -r requirements.txt
    

    以完全相同的版本安装同一组软件包。

    【讨论】:

    • 事实上,我目前使用的是你写的 pip 主干,它也附带卸载。
    • 太棒了。是的,我想你已经控制住了,但想确保这个答案可供遇到问题的其他人使用。
    【解决方案2】:

    如果您下载或查看软件包的源代码分发版(其中包含“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
    

    【讨论】:

    • 还要注意“pip install -e”。相当于“python setup.py develop”,除了它也适用于在 setup.py 中不使用 setuptools 的包(因为 pip 强制他们使用它;>)
    【解决方案3】:

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

    easy_install python-dateutil==1.4.0
    

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

    还支持 svn checkouts,但使用它并不能从手动版本中获得太多好处。有关更多信息,请参阅上面的手册。

    除非您正在开发有问题的包,否则能够切换到特定分支很少有用,然后将它们安装在站点包中通常不是一个好主意。

    【讨论】:

    • 不应该是python-dateutil==1.4.0(双等号)吗?
    【解决方案4】:

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

    【讨论】: