[英]How to import package modules from package's __init__.py?
我有一個要從__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
導入包模塊?
您可以為此使用相對導入 。 嘗試將/tmp/pkg/__init__.py
更改為以下內容:
to_import = [".a", ".b"]
import importlib
for toi in to_import:
importlib.import_module(toi, __name__)
注意模塊名稱前面的點和import_module
函數的第二個參數。
您必須在末尾添加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__
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.