Даже если я работал в Python, я все еще время от времени сталкиваюсь с проблемами со структурой своего пакета.
Я пытаюсь запустить $ pipenv run pytest
из root структура каталогов ниже (т.е. ..
выше src /)
src/
physics/
__init__.py
pathing.py
road/
tests/
__init__.py
test_traffic.py
__init__.py
traffic.py
__init__.py
main.py
traffi c .py:
from physics import pathing
class Intersection():
...
class Vehicle():
...
test_traffi c .py
from src.road.traffic import Intersection, Vehicle
def test_intersection():
...
Тем не менее, меня поразили:
======================================================================= ERRORS ========================================================================
___________________________________________________ ERROR collecting src/road/tests/test_traffic.py ___________________________________________________
ImportError while importing test module '/Users/justian/scripts/py-traffic-sim/src/road/tests/test_traffic.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/road/tests/test_traffic.py:1: in <module>
from src.road.traffic import Intersection, Vehicle
src/road/traffic.py:13: in <module>
from physics import pathing
E ModuleNotFoundError: No module named 'physics'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================================== 1 error in 0.38s ===================================================================
Похоже, я неправильно понимаю, как pytest импортирует мои модули, или неправильно понимаю, как мои модули ссылаются друг на друга. И $ pipenv run pytest
, и $ pipenv run python -m pytest
дают одинаковый результат.
Как правильно импортировать Intersection
и Vehicle
в test_traffi c .py?