【发布时间】:2012-10-19 04:15:25
【问题描述】:
我有一个结构如下的 Python 模块:
demo/
├── __init__.py
├── app.py
├── models.py
├── modules.py
现在我想压缩这个模块并将其存储到数据库中。
如何加载这样的结构化包?
虽然我加载单个.py 文件并使用它的功能没有问题,但我不知道如何处理一个包。在这种情况下,app.py 从 models.py 和 modules.py 导入。
当使用这种方法时,它首先加载 app.py 并抛出异常,因为它没有加载其他 2 个文件。
import new
code = <the code from the db>
mod = new.module('foo')
exec code in mod.__dict__
sys.modules['foo'] = mod
这是如何正确完成的?
【问题讨论】:
-
你真的有一个 ZIP 文件吗?你可能想看看docs.python.org/2/library/zipimport.html#module-zipimport
-
是的,但它来自数据库,因此没有与之关联的路径。
-
从数据库中检索文件,以某种方式存储它,然后将位置添加到
sys.path并导入它? -
@JonClements 可以,但我的文件系统是只读的。
-
猜猜你必须编写自己的导入处理程序......我能想到的唯一其他选择是如果你创建了一个可以使用的小型 ramfs......
标签: python module python-2.7