5

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

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

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

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

4

4 回答 4

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 参数),并将 pip 安装的 cmdutls 安装到我的 virtualenv 文件夹顶层的 src 文件夹中。

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

$  ls thisIsATest/src
cmdutils
于 2010-06-07T00:18:39.127 回答
2

您是否想做开发,但系统是否将开发的版本作为鸡蛋处理(例如获取入口点)?如果是这样,那么您应该检查源代码并通过执行以下操作使用开发模式

python setup.py develop

如果项目碰巧不是上述所需的基于 setuptools 的项目,则可以使用以下命令快速解决:

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

几乎所有你想知道的关于 setuptools(easy_install 的基础)的信息都可以从setuptools 文档中找到。还有easy_install 的文档

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

正如其他人所提到的,如果您只想获取最新版本,您也可以直接使用版本控制 URL,因为它现在无法编辑,但这只会拍摄快照,并且确实会创建一个正常的鸡蛋作为该过程的一部分. 我确定它确实可以使用 Subversion,并且我认为它可以使用其他软件,但我找不到关于它的文档。

于 2010-06-07T00:34:33.243 回答
1

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

于 2010-06-06T23:37:24.200 回答
1

easy_install 安装的包往往来自开发者版本控制的快照,一般是在开发者发布正式版本时制作的。因此,您将不得不在通过 easy_install 方便的自动下载和通过版本控制进行最新代码更新之间进行选择。如果您选择后者,您可以通过运行python setup.py install.

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

于 2010-06-07T00:04:51.563 回答