- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从 ZIP 包加载子模块,但它不起作用。怎样做才是对的?
foo.zip
foo/
__init__.py
bar.py
测试.py
import os
import zipimport
dirname = os.path.dirname(__file__)
importer = zipimport.zipimporter(os.path.join(dirname, 'foo.zip'))
print importer.is_package('foo')
print importer.load_module('foo')
print importer.load_module('foo.bar')
输出
$ python test.py
True
<module 'foo' from 'foo.zip/foo/__init__.py'>
Traceback (most recent call last):
File "test.py", line 8, in <module>
print importer.load_module('foo.bar')
zipimport.ZipImportError: can't find module 'foo.bar'
更新 2015/04/11 06:30 PT
下面的方法可行,但这是问题的真正解决方案吗? zipimport.zipimporter
文档明确指出 “全名必须是完全限定的(带点的)模块名称。” 并且有一个 is_package()
方法似乎功能正常。
import os
import zipimport
dirname = os.path.dirname(__file__)
importer = zipimport.zipimporter(os.path.join(dirname, 'foo.zip'))
def load_module(name):
parts = name.split('.')
module = importer.load_module(parts[0])
full_name = parts[0]
for part in parts[1:]:
full_name += '.' + part
if not hasattr(module, '__path__'):
raise ImportError('%s' % full_name)
path = module.__path__[0]
module = zipimport.zipimporter(path).load_module(part)
return module
print load_module('foo.bar')
最佳答案
如果您将 importer.load_module('foo.bar')
更改为 importer.load_module('foo/bar')
,它将加载。我不确定为什么,因为文档显示
load_module(fullname)
Load the module specified by fullname. fullname must be the fully qualified (dotted) module name. It returns the imported module, or raises ZipImportError if it wasn’t found.
关于python - zipimporter 找不到/加载子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578210/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!