社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Johnny Metz • 7 年前 • 2363 次点击  

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40217
文章 [ 2 ]  |  最新文章 7 年前
ivan_pozdeev
Reply   •   1 楼
ivan_pozdeev    7 年前

它将它们安装到代码库的自动创建的子目录中 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    7 年前

避免 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 举个例子。