python - 在 Python 中导入相关子模块的特定部分
问题描述
项目结构如下:
myproject/
|--- __init__.py
|--- application.py
|--- modules/
|--- __init__.py
|--- parser.py
|--- utils/
|-- __init__.py
|-- helpers.py
在utils/helpers.py
:
def find_stuff():
return stuff
def help_me():
return some_help
在modules/parser.py
中,我想导入find_stuff
(仅此而已)。
我尝试了以下方法:
from ..utils.helpers import find_stuff
但...
ImportError: cannot import name 'find_stuff' from 'myproject.utils.helpers' (/Users/myself/myproject/utils/helpers.py)
这里应该做什么?
笔记:
- 整个项目的绝对导入政策一切正常,直到我开始使用 Pytest,然后一切都崩溃了
- 不,我不想
from ..utils import helpers
然后使用helpers.find_stuff
inparser.py
——我假设 Python 的导入系统是经过深思熟虑的,因此我们可以精确地避免这种情况 - 在错误消息中,我们可以看到 Python 设法找到了正确的文件,但是由于某种原因它不会导入函数/类/对象名称,尽管它存在于文件中
解决方案
根据utils
您没有__init__.py
文件。我认为您将需要一个,甚至一个空的也可以解决问题。
推荐阅读
- eclipse - 如何为 Eclipse 插件添加多个对象贡献?
- bash - 拒绝包含 WWW 的输入。在 bash
- ssas-tabular - TMSL 创建多个分区无法识别的 JSON 属性
- django - Django查看撤消我的代码所取得的成就
- swift - 将 swiftLint 添加到项目后运行 pod install 时出错
- webview - 返回时如何在 xamarin Forms 中停止 webview youtube 视频?
- jenkins - 如何获取在 Multibranch 管道中合并到 master 的分支的名称
- html - Flexbox 网格布局
- java - java.lang.IllegalArgumentException:Oreo 中的给定工作不是活动异常,而我在整个应用程序中使用唯一的作业 ID
- javascript - 为什么我的计算功能不起作用?