python - importlib 不适用于子目录中的文件
问题描述
我有一个这样的目录结构:
__init__.py
test.py
dir1/
__init__.py
dir2
__init__.py
myfile.py
dir2 中可能有更多的 py 文件。所以我想在运行时导入它们并加载这些文件中定义的所有类。
测试.py:
import inspect
import importlib
module = importlib.import_module('dir1/dir2/myfile.py')
for name, obj in inspect.getmembers(module):
if inspect.isclass(module):
print(obj.id) # id is defined in all the classes
这在执行 import_module 时给了我错误:
ModuleNotFoundError:没有名为“dir1/dir2/myfile”的模块
我尝试将 dir1/dir2 路径附加到 sys.path,然后导入 myfile.py,这也不起作用。类似的代码也有效,myfile.py 与 test.py 位于同一级别。
Python版本:3.7
解决方案
只是为了清楚起见重申:
import_module()
只接受带点的模块路径,不接受文件名。例如,importlib.import_module('dir1.dir2.myfile')
推荐阅读
- databricks - Databricks:访问特定 vnet 后面的存储帐户
- c# - 如何将函数的返回值从 (string, string, string) 转换为 (int?, int?, string)
- ios - 是 UIImageView 类型的 UIView
- excel - 如何将(hh:mm:ss)中的两个时间数组按升序合并到Excel中的一个组合数组中?不使用 VBA
- excel - 如何为两个不同的用户表单编写通用流程?
- java - 如何使用定义的值返回上一个窗口 JAVA-FX
- python - 声音伪造频谱分析和使用python的Welch Sectrogram之间的峰值dB值差异
- r - map() 模型输出到数据框
- visual-studio-code - 如何在 Visual Studio Code 中添加多个构建任务?
- php - 从 url 获取 php 5.1 的 json 数据