我有一个模块名称列表,我想从__init__.py
导入。
$ mkdir /tmp/pkg
$ touch /tmp/__init__.py /tmp/pkg/{a.py,b.py}
$ cat /tmp/pkg/__init__.py
to_import = ["a", "b"]
import importlib
for toi in to_import:
importlib.import_module(toi)
$ cd /
$ python
>>> import tmp.pkg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tmp/pkg/__init__.py", line 5, in <module>
importlib.import_module(toi)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named a
>>>
python 2.7.4 Ubuntu 64位
问题 :那么如何从包__init__.py
导入包模块?
答案 0 :(得分:4)
您可以使用relative imports。尝试将/tmp/pkg/__init__.py
更改为以下内容:
to_import = [".a", ".b"]
import importlib
for toi in to_import:
importlib.import_module(toi, __name__)
注意模块名称前面的点和import_module
函数的第二个参数。
答案 1 :(得分:1)
您必须在结尾添加 init
import tmp.pkg.__init__
导入应该与 init .py文件位于相同的路径中,否则它们将无法正常工作
FullPath/pkg/__init__.py
init.py文件
to_import = ["__HistogramObjects__"]
import importlib
for toi in to_import:
importlib.import_module(toi)
然后在您要从
导入的文件中import FullPath.pkg.__init__ as im
for i in im.to_import:
print i
您的输出应为:
__HistogramObjects__