問題タブ [python-importlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
154703 参照

python - importlib.import_module を使用して Python でモジュールをインポートする方法

importlib.import_modulePython 2.7.2 で使用しようとしていますが、奇妙なエラーが発生します。

次のディレクトリ構造を検討してください。

a/b/__init__.py次のコードがあります。

(実際のコード"c"には名前があります。)

しようとするimport a.bと、次のエラーが発生します。

私は何が欠けていますか?

ありがとう!

0 投票する
3 に答える
1309 参照

python-importlib - importlib find_loaderに特定のパスのみを使用するように強制するにはどうすればよいですか?

代わりimpに使用するモジュールに基づいて、いくつかのコードを再実装しようとしています。関数と:importlibの間には微妙な違いがあります。imp.find_moduleimportlib.find_loader

パラメータを排他的な方法で使用しているときimportlibに、システムライブラリにフォールバックしているように見えます。これにより、例外が発生します。imp.find_modulepath

importlib.find_loader特定のパスのみを使用するように強制するにはどうすればよいですか?

0 投票する
2 に答える
89 参照

python - フルネームを含む文字列から関数を取得

次のような文字列があります。

ここで、eval() を実行しようとすると、まだ pwd をインポートしていないため例外が発生する可能性があります (または、持っている場合はそうでない可能性があります)。

そこで、文字列を "." で分割するパーサーを作成することにしました。そしてリストを取得します:

それがlis[0]含まれていない場合、"("または")"私が呼び出す場合は、

そして再び評価。

同じものをより良くすることはできますか?

0 投票する
3 に答える
23428 参照

python - Python モジュール名にエイリアスを付ける方法 (下位互換性を維持して名前を変更する)

という名前の python パッケージがfooあり、インポートで使用します。

ここで、fooモジュールの名前を別の名前に変更する必要があるbarので、次のようにします。

しかし、既存のコードとの下位互換性を維持したいので、古い ( foo.) インポートも同様に機能し、インポートと同じことを行う必要がありますbar.

Python 2.7でこれをどのように達成できますか?

0 投票する
0 に答える
46 参照

python - Python クラスの予期しない動作 (importlib x import サブシステム)

この質問は、Python オブジェクトではなく、型の比較に関するものです。より正確には、__main__module で定義された型が によってインポートされた型と異なる理由importlib.import_module()test2()すべてのタイプが によってインポートされた場合、問題は発生しないことに注意してください ( ) importlib.import_module()

m.pyというモジュールがある場合:

なぜpython m.py test1が失敗し、なぜpython m.py test2が失敗しないのですか? (py2.7.x および py3.4.x でテスト済み)

0 投票する
0 に答える
238 参照

python - ランタイム パッチ python モジュール

インポートを置き換えながらモジュールを実行する方法を探しています。run_patchedこれは、次の疑似コードで実装するのに欠けている魔法です。

単一のメソッドは、たとえば stating などの代入に置き換えることができることを知っているので、 のようなグローバルをいじってから、 でモジュールを実行ArgumentParser.parse_args = printしたくなりました。sys.modulesrunpy.run_module

残念ながら、戦略全体はマルチスレッドのシナリオで機能するはずです。したがって、変更は実行されたモジュールにのみ影響し、プログラムの他の部分は、パッチが適用されていないモジュールをそのまま使用し続けることができます。