从数据库加载压缩的python模块

时间:2012-10-29 19:49:14

标签: python module python-2.7

我有一个Python模块,其结构如下:

demo/
├── __init__.py
├── app.py
├── models.py
├── modules.py

现在我要压缩此模块并将其存储到数据库中。

我如何加载这样的结构化包? 虽然我没有加载单个.py文件并使用其功能的问题,但我不知道如何处理包。在这种情况下,app.py会从models.pymodules.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

这是怎么做的?

1 个答案:

答案 0 :(得分:2)

我相信你正在寻找的是创建finder和loader类,Doug Hellmann在其中一篇PyMOTW帖子中描述:

http://www.doughellmann.com/PyMOTW/sys/imports.html

虽然Doug的完整帖子可能需要阅读,但是从数据库中存储和加载多文件模块的示例的内容在使用Python数据库“搁置”的部分中:

http://www.doughellmann.com/PyMOTW/sys/imports.html#importing-from-a-shelve