Python社区  »  Python

setuptools如何在python setup.py test命令上安装测试依赖项

Johnny Metz • 1 周前 • 11 次点击  

当我使用命令时 python setup.py test ,所有的 documentation 我看到setuptools将处理安装测试依赖项。它在哪里安装它们,并在测试套件运行后从计算机中删除它们?我注意到在这个命令完成之后,没有一个测试模块真正安装到我的虚拟环境中。

我知道它需要 tests_require 列出并安装在某个地方,但我不确定它在哪里,之后对它们做了什么,以及为什么要这样做。另外,是否有任何方法可以在不使用标志的情况下(如使用配置文件或其他东西)向命令传递参数?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40217
 
11 次点击  
分享到微博
文章 [ 2 ]  |  最新文章 1 周前
ivan_pozdeev
Reply   •   1 楼
ivan_pozdeev    6 月前

它将它们安装到代码库的自动创建的子目录中 named .eggs 作为 .egg 那是因为 鸡蛋 可从任何位置导入。

因此,这在现代环境中很可能不起作用,因为包不是作为 鸡蛋 S(输给竞争对手 .whl S)所以 setuptools 必须从源代码(使用 bdist_egg )对于许多广泛使用的具有非平凡构建需求的二进制包(更不用说所需的时间和包未被测试为 鸡蛋 也可以,这样打包可能会失败)。


相反,在 requirements.txt 调用 pip install -r requirements.txt 之前的建设似乎已经成为普遍的做法。这不会使 setup.py 根据从源自动生成 pip 不过。

我试着自己安装 Stuff.Py 但事实证明这是脆弱的(例如,如果用户没有对 site-packages )

至少许多知名项目采用的最佳解决方案似乎是 Stuff.Py 如果他们不在场就失败。如果需求不是python而是c库 Stuff.Py 不知道如何在特定环境中安装这些。如您所见,这是对 需求.txt 当然。

wim
Reply   •   2 楼
wim    6 月前

避免 python setup.py test tests_require ,这是一个“特征”的老生常谈。

这只是将测试dep下载到项目的安装目录中,这很少是开发人员希望或期望发生的事情!这在具有虚拟环境的现代CI工作流中不太适用,您希望将依赖项安装到站点包中。

The recommended way to do it using setuptools these days is with an extras_require tag. . 见 here 举个例子。