0

我有一个结构如下的 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

这是如何正确完成的?

4

1 回答 1

2

我相信您正在寻找的是创建查找器和加载器类,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

于 2012-12-29T23:24:55.223 回答