3

猫测试.py

from importlib import import_module

bar = import_module('bar', package='project')

ls项目/

__init__.py  
__init__.pyc
bar.py
bar.pyc

蟒蛇测试.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 。

有任何想法吗?

4

2 回答 2

3

它需要在 bar 前面加一个点 .. :-(

bar = import_module('.bar', package='project')
于 2016-08-25T03:18:45.903 回答
0

import_lib的文档说

如果名称是用相对术语指定的,则必须将 package 参数指定给要充当解析包名称的锚的包(例如 import_module('..mod', 'pkg.subpkg') 将 import pkg .mod)。

因此表达式也可以写成

bar = import_module('..bar',package='project.bar')
于 2016-08-25T04:20:16.593 回答