Pytest使用Tox时说'ModuleNotFoundError'

问题描述 投票:3回答:2

我具有以下项目结构:

root
|- module
  |- module.py
  |- __init__.py
|- tests
   |- unit
      |- some_test.py
   |- integration
      |- another_test.py
|- conftest.py
|- setup.py
|- tox.ini

当我运行python3 module/module.py ...时,它按预期运行。

但是,当我执行tox时,我会得到ModuleNotFoundError: No module named 'dateutil'

在我的setup.py中,我有install_requires=['python-dateutil'],tox.ini具有以下(简体)内容:

[tox]
envlist   = py{36, 37}
skipsdist = True

[testenv]
deps = pytest
commands = pytest

有人对运行tox为何无法找到模块'dateutil'以及如何解决该问题有任何见解?

python pytest tox
2个回答
3
投票

[[tox]skipsdist = Truepreventstox运行python setup.py sdist,因此您的install_requires被完全忽略。

如果您真的想按照建议为应用程序设置[tox]skipsdist = True,还建议您遵循所有其他打包应用程序的最佳实践:使用requirements.txt并添加

[testenv]
deps =
    -rrequirements.txt

tox.ini。或直接直接

[testenv]
deps = python-dateutil

0
投票

什么帮助了我:

  1. 将缺少的模块添加到install_requiressetup.py部分中>
  2. 删除旧的.tox目录并重新运行tox
© www.soinside.com 2019 - 2024. All rights reserved.