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)