【发布时间】:2018-07-19 13:36:59
【问题描述】:
这个问题已经被问过 DOZENS 次了,但是我遇到的每一个问题都没有适合我的解决方案。
我正在使用 Python 2.7 和 pytest 运行测试。
结构如下(来自我的项目/git repo的根目录):
myapp/
myapp/
__init__.py # def main():
# ... stuff
# if __name__ == "__main__":
# main()
__main__.py # import __init__ as myapp
# myapp.main()
config.yaml # (app config file)
myapplib/
__init__.py # (Empty file)
config.py # Loads {projectroot}/config.yaml
# def cfg():
# ... stuff
tests/
test_stuff.py # from myapplib.config import cfg
然后我尝试运行 tests/test_stuff.py 文件:
cd {projectroot}
pytest
它抱怨:
myapp/tests/test_stuff.py:38: in <module>
from myapplib.config import cfg
E ImportError: No module named myapp.config
我尝试过的一些事情:
- 使用
-m导入myapplib或myapp.myapplib - 从不同的目录开始
pytest(例如,在 tests/ 内部) - 在所有其他答案中使用所有路径技巧
- 将其更改为
from . import XXX或..或任何相关导入选项(但这些都因ValueError: Attempted relative import in non-package而失败。
应用程序本身在项目目录中运行良好,毫无价值:
cd {projectroot}
python myapp
...所有配置和路径都可以正常工作。只是测试找不到路径。
这是我目前所拥有的完整复制品:
https://pyfiddle.io/fiddle/4fa60f5a-02df-43bb-8aa3-03e59ff72650/?m=Saved%20fiddle
【问题讨论】:
-
看来
myapp.config不存在。不应该是myapp.myapplib.config吗?该错误似乎与您的代码不匹配。 -
是的,也试过了,只是抱怨
ImportError: No module named myapp.myapplib.config -
是的,也试过了????
-
我的意思是你说你的代码是
from myapplib.config import cfg,但错误状态是from myapp.config import cfg。先澄清一下 -
哈,哎呀红鲱鱼。更新了问题。
标签: python python-2.7 pytest python-module