python - python加载在不同文件夹中找到的相同包结构的模块
问题描述
我有以下文件夹结构:
data_plugin_main/
/common
__init__.py
utils.py
/data
__init__.py
commmon_dal.py
plugin1
/data
__init__.py
data_plugin_dal.py
plugin2
/data
__init__.py
another_plugin_dal.py
我需要维护这个结构,但能够编写导入或引用的代码:
- data.common_dal
- data.data_plugin_dal
- data.another_plugin_dal
似乎 python 只会在它遇到的第一个数据文件夹中导入/加载模块。所以在上述情况下,由于在__init__.py
under data_plugin_main/data/
,common_dal.py
被加载。但是,即使我将其他路径添加到PYTHONPATH
, data_plugin_dal
也another_plugin_dal
无法导入或引用。
有谁知道如何解决这个问题?
谢谢
解决方案
如果我理解正确,您可能想尝试在 Eclipse 中自由安装的 Pydev 环境。
每个模块也是具有父模块的目录名称,它们都是父模块,因此在 pydev 中,如果 plugin_2 源需要引用 common_dal.py,则导入看起来像from data_plugin_main import data.common_dal
所以在项目资源管理器中,您将创建一个父模块,它充当超级__init__
然后您可以根据需要创建子模块。这有点像 Javaishly 的启发。
推荐阅读
- python - 如何通过 Python 脚本为 Blender 材质设置着色器节点属性?
- flutter - 颤振中的 mockito 缺少存根错误。尝试在模拟的 SharedPreferences 上使用 setString
- php - 保护托管在 Bluehost 上的 WordPress 应用程序中的静态内容
- c - Scanf 在某些格式中读取错误的数字
- hibernate - 有没有办法“使用同一实体两次”执行单查询 JOIN FETCH?
- linux - 在linux终端中同时修剪字符串的开头/结尾
- c++ - 随机化不同的 cout 语句(例如获得 4 个可能的测验答案)
- html - 有没有办法让我的页面在 html 中响应?
- android - Android Dev - 如何处理音频输出通道
- javascript - 使用纯 Javascript 创建具有自定义格式的唯一标识符