【发布时间】:2018-09-02 09:15:52
【问题描述】:
我现在很困惑。这是项目树:
project
- source
- - lib
- - - __init__.py
- - - utils.py
- - - stats.py
- test
- - lib
- - - test_stats.py
stats.py 有import utils,如果自己执行stats.py,它确实有效。现在test_stats.py 具有import lib.stats,但如果在project 目录中以PYTHONPATH=source pytest 执行,则会导致ModuleNotFoundError: No module named 'utils' 错误:
==================================== ERRORS ====================================
___________________ ERROR collecting test/lib/test_stats.py ___________________
ImportError while importing test module '/lib/test_stats.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test/lib/test_stats.py:40: in <module>
import lib.stats
source/lib/__init__.py:42: in <module>
from .stats import Stats
source/lib/stats.py:40: in <module>
import utils
E ModuleNotFoundError: No module named 'utils'
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.19 seconds ============================
发生了什么以及如何正确执行具有这种目录结构的测试?
PS 我知道(开发模式)pip install ... 和 tox 技巧(用于模块搜索路径),但我想了解它们是否是绝对必要的或者我已经假设这个简单的设置有问题。
【问题讨论】:
标签: python python-3.x python-import pytest