Python 如何在没有setup.py的项目中运行tox?

Python 如何在没有setup.py的项目中运行tox?,python,unit-testing,distutils,tox,Python,Unit Testing,Distutils,Tox,我想使用tox在两个VirtualNV中运行我的单元测试,因为我的应用程序必须支持两个不同的Python版本 我的问题是tox需要setup.py,但我没有,因为我的应用程序不是一个模块,并且有自己的安装程序。目前,我不想经历自动化安装过程的麻烦,因为要使用setup.py,我只想运行我的单元测试,而不必编写setup.py 可能吗?或者我如何编写一个“空”setup.py,它什么也不做?你能给我指出一些关于这个主题的文档吗(文档说明了如何编写一个有意义的setup.py,而不是空的)?在深入研

我想使用
tox
在两个VirtualNV中运行我的单元测试,因为我的应用程序必须支持两个不同的Python版本

我的问题是
tox
需要
setup.py
,但我没有,因为我的应用程序不是一个模块,并且有自己的安装程序。目前,我不想经历自动化安装过程的麻烦,因为要使用
setup.py
,我只想运行我的单元测试,而不必编写
setup.py


可能吗?或者我如何编写一个“空”setup.py,它什么也不做?你能给我指出一些关于这个主题的文档吗(文档说明了如何编写一个有意义的
setup.py
,而不是空的)?

在深入研究源代码之后,我在tox.ini中发现了一个几乎没有文档的选项,它跳过了sdist:

[tox]
skipsdist = BOOL    # defaults to false

如果您有一个应用程序(带有
requirements.txt
),而不是一个您将要分发的项目(而是一个
setup.py
),那么将此设置为
True
我得到了我想要的,省去了编写有意义的
setup.py
的工作,您的
tox.ini
应该如下所示:

[tox]
skipsdist = True

[testenv]
deps = -r{toxinidir}/requirements.txt
从David Murphy的博客中找到此答案,但该页面不再可用,您可以在此处找到存档版本:


(原始链接,现已失效:)

这是我的
tox.ini
文件内容,用于Django项目,通过多种设置:

[tox]
envlist = py36-{accounting,content,media}_settings
skipsdist = true

[testenv]
commands = python {toxinidir}/manage.py test
deps = -r{toxinidir}/requirements.txt

setenv =
    accounting_settings: DJANGO_SETTINGS_MODULE=my_project.settings.accounting
    contents_settings: DJANGO_SETTINGS_MODULE=my_project.settings.contents
    media_settings: DJANGO_SETTINGS_MODULE=my_project.settings.media

我还必须从配置文件中删除
usedevelop=true

我的配置如下所示:

[tox]
envlist = flake8,py36

[testenv]
usedevelop = true
install_command = pip install -U {opts} {packages}
deps =
    py36: -r requirements.txt
    py36: -r requirements-test.txt
    flake8: flake8
commands=
    flake8: flake8 app tests --ignore=E501,W503
    py36: pytest {toxinidir}/tests {posargs}

如其他答案所示,我添加了
skipsdist=true
。但这还不够。如上所述,删除
usedevelop=true
也起到了作用。

那么实际运行测试的
tox.ini
代码是什么呢?我的测试是用nosetest运行的:
commands=nosetests{posargs}
我用
python manage.py test
运行Django测试,因此那里也不需要setup.py。谢谢你的提示。如果你要这么做,你可能还需要设置PYTHONPATH,只需在[testenv]下设置
setenv=#newline PYTHONPATH=。
这样,在开始时,在传达@ZN13的指示时,注释格式可能会让人困惑。有关它在
tox.ini
文件中的外观,请参见。