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 の投稿の 1 つで説明しているファインダー クラスとローダー クラスを作成することだと思います。

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

Doug の完全な投稿はおそらく読む必要がありますが、データベースからマルチファイル モジュールを格納およびロードする例の要点は、Python データベース「shelve」を使用するセクションにあります。

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

于 2012-12-29T23:24:55.223 に答える