从任意VCS存储库安装python模块的最佳实践

时间:2010-06-06 23:32:16

标签: python version-control module easy-install

我对python生态系统很新,并对模块编辑有疑问。

我使用了一堆在PyPi上发布的第三方模块。来自C和Java背景,我喜欢easy_install <whatever>的轻松。这是一个新的,美妙的世界,但是当我想编辑新安装的模块时,模型出现故障有两个原因:

  1. egg文件可能存储在文件系统中疯狂的文件夹或存档中。
  2. 使用egg似乎排除了使用原始项目的版本控制系统,就像使用debian软件包阻止从原始VCS存储库进行开发一样。
  3. 从任意VCS存储库安装模块的最佳做法是什么?我希望能够在其他脚本中继续import foomodule。如果我修改模块的源代码,我是否需要执行任何其他命令?

4 个答案:

答案 0 :(得分:3)

Pip允许您安装文件,提供Subversion,git,Mercurial或bzr存储库的URL。

pip install -e svn+http://path_to_some_svn/repo#egg=package_name

实施例:     pip install -e hg + https://rwilcox@bitbucket.org/ianb/cmdutils#egg=cmdutils

如果我想下载最新版本的cmdutils。 (随机包我决定拉)。

我将它安装到virtualenv(使用-E参数),然后将cmdutls安装到我的virtualenv文件夹顶层的src文件夹中。

pip install -E thisIsATest -e hg+https://rwilcox@bitbucket.org/ianb/cmdutils#egg=cmdutils

$  ls thisIsATest/src
cmdutils

答案 1 :(得分:2)

您是否想要进行开发,但系统会将开发版本作为鸡蛋处理(例如获取入口点)?如果是,那么您应该查看源代码并通过执行以下操作Development Mode

python setup.py develop

如果项目恰好不是基于setuptools的项目,这是上面所要求的,那么这个命令可以快速解决:

python -c "import setuptools; execfile('setup.py')" develop

setuptools docs提供了几乎所有关于setuptools(easy_install的基础)的知识。还有docs for easy_install

开发模式以与easy_install相同的方式将项目添加到导入路径。您下次导入模块时,您的应用程序将可以进行更改。

正如其他人提到的,你也可以直接使用版本控制URL,如果你只是想获得最新的版本,因为它现在没有编辑的能力,但这只会拍摄快照,而且确实会创建一个普通的鸡蛋作为一部分这个过程。我确信它确实是Subversion,我认为它做了其他的但是我找不到那些文档。

答案 2 :(得分:1)

您可以将代码的PYTHONPATH environment variable或符号链接用于site-packages中的某个位置。

答案 3 :(得分:1)

easy_install安装的软件包往往来自开发人员版本控制的快照,通常是在开发人员发布正式版本时制作的。因此,您必须在通过easy_install进行方便的自动下载和通过版本控制进行最新的代码更新之间进行选择。如果您选择后者,则可以通过运行python setup.py install直接从版本控制签出构建和安装python包索引中看到的大多数包。

如果您不喜欢默认安装目录,则可以安装到自定义位置,然后导出PYTHONPATH环境变量,其值为已安装软件包的父文件夹的路径。