Python 从另一个包中动态导入包
以下是该计划的结构:Python 从另一个包中动态导入包,python,python-3.x,python-importlib,Python,Python 3.x,Python Importlib,以下是该计划的结构: ├── app.py ├── apps │ ├── __init__.py │ ├── secure │ │ ├── handler.py │ │ └── __init__.py └ └── test.py 我正在app.py中尝试从app.secure内部动态导入处理程序,如下所示: import importlib a = importlib.import_module('handler', 'apps.secure') 通过执行此操作,
├── app.py
├── apps
│ ├── __init__.py
│ ├── secure
│ │ ├── handler.py
│ │ └── __init__.py
└ └── test.py
我正在app.py中尝试从app.secure内部动态导入处理程序,如下所示:
import importlib
a = importlib.import_module('handler', 'apps.secure')
通过执行此操作,我希望导入处理程序,但出现以下错误:
Traceback (most recent call last):
File "/home/user/Projects/toolkit/app.py", line 5, in <module>
a = importlib.import_module('handler', 'apps.sticker_to_sticker')
File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'handler'
在尝试使用uuuu import uuuu而不是像uuu import uuuuu uuuu uuuu uuu uuu uuuu uuu uuu uuu uuu。而从apps.secure导入处理程序工作正常。我需要导入是动态的,因为该程序需要能够加载应用程序包内的任何包
是否有一种方法可以动态导入此模块,否则我将不得不使用exec?尝试使“处理程序”导入相对:
import importlib
a = importlib.import_module('.handler', 'apps.secure')
介绍了从子模块中进行相对导入的类似示例