【发布时间】:2012-01-19 18:31:57
【问题描述】:
假设我有一个包含 Python 鸡蛋的二进制字符串,全部压缩。有没有办法从内存中执行和“导入”那个鸡蛋,而无需将它写入磁盘?
【问题讨论】:
标签: python
假设我有一个包含 Python 鸡蛋的二进制字符串,全部压缩。有没有办法从内存中执行和“导入”那个鸡蛋,而无需将它写入磁盘?
【问题讨论】:
标签: python
eggs 只是另一个名称的 zip 文件,因此它们是使用 zipimport.zipimporter 导入的,(不幸的是)这是一个用 C 编写的模块。
我认为您的选择是:
file 类似对象
而不是文件名file-like 对象最后一个可能是最简单的。
【讨论】:
前段时间,我查看了 pypiserver,可能与您需要的类似: http://pypi.python.org/pypi/pypiserver/0.5.0
独立版本 https://raw.github.com/schmir/pypiserver/standalone/pypi-server-standalone.py
用 DictImporter 和 zlib 库做了一些有趣的魔法,也许你可以做类似的事情..
【讨论】:
看看imp模块:http://docs.python.org/library/imp.html
你可能对字节编译模块或动态形成的模块有一些运气。
这个食谱也可能有帮助(我猜不是这样):
http://code.activestate.com/recipes/82234-importing-a-dynamically-generated-module/
如前所述,在对后者的评论中,仅适用于单个模块。
这个问题和前段时间问的类似:Python, import string of Python code as module
【讨论】:
我不熟悉 Python Egg,但尝试使用 StringIO 对象。因为 Python 使用了duck typing,所以如果你不对它调用任何文件特定的方法,你可以把它当作一个文件来对待。
【讨论】: