【发布时间】:2020-07-12 20:35:09
【问题描述】:
假设您有以下项目结构:
FooProject
├── foo_components
│ ├── __init__.py
│ └── foo1.py
├── utils
│ ├── __init__.py
│ └── utils1.py
├── tests
│ ├── __init__.py
│ └── foo_components
│ ├── __init__.py
│ └── test_foo1.py
│ ├── utils
│ └── __init__.py
│ └──test_utils1.py
|
└── __init__.py
我的问题如下:
考虑您在test_foo1.py 文件的范围内
为了测试壮观的 foo 组件,称为:foo1。
您要导入以下内容:
from foo_components.foo1 import Foo1
但是由于歧义,您会收到错误消息:Module not found for foo_components.foo1。
这可能是因为在您的范围内 foo_components 模块被称为模块路径:
tests.foo_components。 (意味着它没有foo1,更可能是test_foo1)。
你会如何优雅地解决这种情况?
我可以让 python 理解我指的是哪个 python 模块,似乎它会自动将假设假设为相对导入,而不是顶级模块。
在您的解决方案中,请避免建议使用相对导入进行导入,据我所知这是不错的做法,意思是 from ../../xyz import foo1。
我想在测试中将foo_component 更改为不同的名称,但我也不喜欢这个解决方案,我想有一些合理的方法。
有什么建议吗?
【问题讨论】:
标签: python python-3.x python-import importerror