Python 如何将pkgutil.walk_包用于压缩包
我能在压缩包中找到模块而不首先解压缩吗 我正在使用检查一个包,并使用拉出所有模块 这在压缩包时不起作用<代码>步行包采用路径 我可以先解压缩包,然后使用:Python 如何将pkgutil.walk_包用于压缩包,python,python-2.7,Python,Python 2.7,我能在压缩包中找到模块而不首先解压缩吗 我正在使用检查一个包,并使用拉出所有模块 这在压缩包时不起作用步行包采用路径 我可以先解压缩包,然后使用: for _, pkg, _ in pkgutil.walk_packages(unzipped_package_path): yield importlib.import_module(pkg) 但我希望不需要先解压缩就可以完成 pkgutil.getdata可以使用压缩包,我很惊讶pkgutil.walk\u包不起作用 我在想我是否错过了
for _, pkg, _ in pkgutil.walk_packages(unzipped_package_path):
yield importlib.import_module(pkg)
但我希望不需要先解压缩就可以完成
pkgutil.getdata
可以使用压缩包,我很惊讶pkgutil.walk\u包不起作用
我在想我是否错过了什么
此外,我仅限于使用Python 2.7.0,它在Python 2.7.5上适用。在PYTHONPATH上将urwid作为一个egg,它只是一个.zip文件:
>>> import pkgutil, urwid
>>> list(pkgutil.walk_packages(urwid.__path__))
[(<zipimporter object "urwid.egg/urwid/">,
'canvas',
False),
(<zipimporter object "urwid.egg/urwid/">,
'command_map',
False),
(<zipimporter object "urwid.egg/urwid/">,
'compat',
False),
...
导入pkgutil,urwid
>>>列表(pkgutil.walk\u包(urwid.\uuuu路径)
[(,
“画布”,
假),,
(,
“命令映射”,
假),,
(,
"同胞",,
假),,
...
但是包名都是相对于urwid
的。使用importlib.import\u模块('urwid.canvas')
而不是importlib.import\u模块('canvas')
pkgutil.walk\u包
也将接受prefix='urwid.
关键字参数,并将该文本作为输出名称的前缀
您还应该注意
walk\u packages
中的第三个值ispkg
,谢谢您的回复。我会看看这个。我想我记得2.7.0有一个问题。
>>> import pkgutil, urwid
>>> list(pkgutil.walk_packages(urwid.__path__))
[(<zipimporter object "urwid.egg/urwid/">,
'canvas',
False),
(<zipimporter object "urwid.egg/urwid/">,
'command_map',
False),
(<zipimporter object "urwid.egg/urwid/">,
'compat',
False),
...