2

「_module1.so」、「_module2.so」などの名前の共有ライブラリに存在する、C++で記述されたいくつかの拡張モジュールを含む「pkg」という名前のパッケージがあります。これらは通常の構文を使用してインポートできます。

import _module1

ただし、ユーザーがモジュール名を「mod1」、「mod2」などと表示して、次のようにインポートすることをお勧めします。

import mod1

共有ライブラリの名前を変更せずにそれを行う方法はありますか?

ありがとう。

4

3 に答える 3

4

ソースコードに元のモジュール名を入れてもかまわないが、別の名前を使用したい場合は、次の構文を使用できます。

import _module1 as mod1
于 2012-08-28T20:20:46.890 に答える
1

エイリアシングのインポートの提案に加えて、mod1コード内に次の__init__.pyファイルを含むフォルダーを作成できます。

from _module1 import *

これimport mod1でファイルが実行され、__init__.pyすべてがロードさmodule_1れてmod1の名前空間に配置され、効果的にmod1動作するようになります_module1import *期待どおりに機能する場合)。

于 2012-08-28T20:24:06.473 に答える
1

で使用されるより複雑なメソッドも見ましたpasslib。基本的に、使いやすいモジュールはプロキシを使用して、使いやすさを犠牲にすることなく、プロジェクトで使用される複数のサブモジュールへのディスパッチを処理します。

メイン モジュールは次のようになります。

from mymodule.registry import _proxy
import sys
sys.modules[__name__] = _proxy

_proxyは基本的にプロキシ パターンの実装であり、遅延読み込みなどを処理します。

プロキシに煩わされたくない場合:

"""Main module `mod1`"""

import _module1
import sys
sys.modules[__name__] = _module1
于 2012-08-28T20:24:58.853 に答える