簡體   English   中英

如何從包的__init__.py導入包模塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM