如何从软件包的UuInit_Uu.py导入包模块?

2024-06-11 02:48:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要从^{导入的模块名列表。在

$ 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位

问题:那么我如何从包的^{导入包模块?在


Tags: 模块toinpyimport列表initline
2条回答

您可以使用relative imports进行此操作。尝试将/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文件在同一路径中,否则它们将无法工作

^{pr2}$

在初始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__

相关问题 更多 >