如何说服setuptools使用来自setup_require或tests_require的require包的临时目录?

时间:2012-05-22 14:00:14

标签: python setuptools distutils setup.py

setup.py内,我有类似的内容:

setup_requires=['nose>=1.0'],
tests_require=[],

问题在于,当我运行./setup.py test时,它将使用setup.py下载并解压缩这些模块。

我如何说服它使用临时目录,我不想用这些来控制源代码控制系统,我不想开始添加大量的exlude模式。

2 个答案:

答案 0 :(得分:1)

如果问题是项目的源代码树,您应该制作一个脚本来删除在安装测试结束时由distutils创建的所有“dist”和“build”目录。 下载的包通常是源树中的* .egg文件夹。

您没有污染您的发行版。

来自setuptools文档:

  

setup_requires 不会自动安装在系统所在的位置   正在运行安装脚本。它们只是下载到设置中   目录,如果他们已经在本地不可用。如果你想要他们   要安装,以及在安装脚本时可用   运行,你应该将它们添加到install_requires和setup_requires。)

  

tests_require 如果您的项目测试需要一个或多个额外的测试   除了安装它之外的软件包,您可以使用此选项   指定它们。它应该是一个字符串或字符串列表指定   包的测试需要提供哪些其他发行版   跑。运行test命令时,setuptools将尝试获取   这些(甚至可以使用EasyInstall下载它们)。注意   这些必需的项目将不会安装在系统所在的位置   测试运行,但只下载到项目的设置   目录,如果它们尚未在本地安装。

http://packages.python.org/distribute/setuptools.html

如果您安装了某个包,则需要将其删除, 只需在python发行版的子文件夹“site-packages”中找到您的包 并删除它。最后删除easy-install.pth文件中的包引用 它通常位于相同的“site-packages”目录中。

答案 1 :(得分:0)

Starting with setuptools 7.0, transient dependencies loaded for setup_requires, tests_require, and similar are installed into ./.eggs. I strongly encourage adding that to your global ignore list.