Python 与pkgutil.iter_模块的结果不一致

Python 与pkgutil.iter_模块的结果不一致,python,Python,我试图在一个包中打印出给定模块的所有子模块。然而,当运行函数来执行此操作时,我得到的结果好坏参半,有人能解释为什么会发生这种情况以及如何避免这种情况吗 项目布局: /Users/me/projects/project setup.py /project __init__.py tool.py /projectdir __init__.py test.py /用户/me/project

我试图在一个包中打印出给定模块的所有子模块。然而,当运行函数来执行此操作时,我得到的结果好坏参半,有人能解释为什么会发生这种情况以及如何避免这种情况吗

项目布局:

/Users/me/projects/project
    setup.py
    /project
        __init__.py
        tool.py
        /projectdir
            __init__.py
            test.py
/用户/me/projects/project/project/tool.py:

import pkgutil


for importer, modname, ispkg in \
        pkgutil.iter_modules('project.projectdir',
                             prefix='project.projectdir.'):
    if not ispkg:
        print '{}'.format(modname)
/用户/me/projects/project/project/projectdir/test.py

def one():
    return 'one'
这应该理想地打印出
/projectdir
中的所有模块,但是我得到的结果不一

这是正确的:

$ cd /Users/me
$ project
>> project.projectdir.test
这些都是错误的:

$ cd /Users/me/projects
$ project
>> 

$ cd /Users/me/projects/project
$ project
>> project.projectdir.one

使用
。\uuuu路径\uuuu
可以避免出现迭代的相对路径。在您的示例中,不是传递
project.projectdir.
而是传递
/Users/me/projects/project

import pkgutil

# import module that will be inspected
import project


package = project
for importer, modname, ispkg in pkgutil.iter_modules(package.__path__, prefix='project.projectdir.'):
    if not ispkg:
        print '{}'.format(modname)