繁体   English   中英

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

[英]Best practice for installing python modules from an arbitrary VCS repository

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

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

  1. egg文件可以存储在文件系统上疯狂的文件夹或存档中。
  2. 使用egg似乎排除了使用原始项目的版本控制系统,就像使用debian软件包阻止从原始VCS存储库进行开发一样。

从任意VCS存储库安装模块的最佳实践是什么? 我希望能够继续在其他脚本中import foomodule 如果我修改模块的源代码,我是否需要执行任何其他命令?

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

您是否想要进行开发,但是系统会将开发版本作为一个鸡蛋处理(例如获取入口点)? 如果是,那么您应该检查源并使用开发模式

python setup.py develop

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

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

几乎所有关于setuptools的知识(easy_install的基础)都可以在setuptools文档中找到 还有easy_install的文档

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

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

您可以使用PYTHONPATH环境变量或将代码符号链接到站点包中的某个位置。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM