Pytest говорит 'ModuleNotFoundError' при использовании tox

У меня следующая структура проекта:

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 не может быть найден и как его исправить?


person Max Power    schedule 05.02.2019    source источник


Ответы (2)


[tox]skipsdist = True предотвращает tox запуск python setup.py sdist, поэтому ваш install_requires полностью игнорируется.

Если вы действительно хотите следовать совету по установке [tox]skipsdist = True для приложений, вам также рекомендуется следовать всем остальным передовым методам упаковки приложений: используйте requirements.txt и добавьте

[testenv]
deps =
    -rrequirements.txt

к tox.ini. Или просто прямо

[testenv]
deps = python-dateutil
person phd    schedule 05.02.2019

Что мне помогло:

  1. Добавьте недостающие модули в раздел install_requires файла setup.py
  2. Удалите старый .tox каталог и перезапустите tox
person Fedorov7890    schedule 22.05.2020
comment
Я использую flit, но удаление каталога .tox и повторный запуск tox решили мою проблему. Спасибо! - person Dave Johnson; 05.12.2020