cat test.py
from importlib import import_module
bar = import_module('bar', package='project')
ls project /
__init__.py
__init__.pyc
bar.py
bar.pyc
python test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
bar = import_module('bar', package='project')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named bar
列出导入的模块(sys.modules)并不显示任何模块项目。
我可以使用python shell导入 bar 。
有什么想法吗?
答案 0 :(得分:2)
在酒吧前面需要一个点..: - (
bar = import_module('.bar', package='project')
答案 1 :(得分:0)
import_lib的文档说明了
如果以相对术语指定名称,则必须将package参数指定给作为解析包名称的锚点的包(例如import_module(&#39; .. mod&#39;,& #39; pkg.subpkg&#39;)将导入pkg.mod)。
因此表达式也可以写成
bar = import_module('..bar',package='project.bar')