从包中导入模块

3

我正在尝试从按照Python模块教程的说明设置的包中导入一个模块。我的目录树如下:

$ pwd
/home/me/lib/python/pygplib

$ ls *
__init__.py

atcf:
atcf.py  __init__.py

我能够导入pygplib,但是pygplib.atcf似乎不存在:
In [1]: import pygplib

In [2]: dir(pygplib)
Out[2]: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']

我做错了什么?我的所有__init__.py文件都是空的。谢谢。

你尝试过使用 import pygplib.atcf.atcf 来获取该文件中的内容吗? - mVChr
2个回答

3

当你导入顶层包时,子模块不会被导入,因此在 dir 中也不会出现。相反,需要使用以下方式:

from pygplib import atcf

或者

from pygplib.atcf import atcf

3

atcf并不会自动导入到pygplib的命名空间中,但是你可以通过将以下代码放入文件中来实现:

import atcf

pygplib/__init__.py中。

谢谢,这正是我所需要的,因为我希望在包导入时在命名空间中可用子模块。 - milancurcic
1
还要注意,如果你想让atcf.py中的内容在pygplib.atcf命名空间中,你需要在pyglib/atcf/__init__.py中加入from atcf import * - unutbu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接