問題タブ [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.
python - importlib.import_module を使用して Python でモジュールをインポートする方法
importlib.import_module
Python 2.7.2 で使用しようとしていますが、奇妙なエラーが発生します。
次のディレクトリ構造を検討してください。
a/b/__init__.py
次のコードがあります。
(実際のコード"c"
には名前があります。)
しようとするimport a.b
と、次のエラーが発生します。
私は何が欠けていますか?
ありがとう!
python-importlib - importlib find_loaderに特定のパスのみを使用するように強制するにはどうすればよいですか?
代わりimp
に使用するモジュールに基づいて、いくつかのコードを再実装しようとしています。関数と:importlib
の間には微妙な違いがあります。imp.find_module
importlib.find_loader
パラメータを排他的な方法で使用しているときimportlib
に、システムライブラリにフォールバックしているように見えます。これにより、例外が発生します。imp.find_module
path
importlib.find_loader
特定のパスのみを使用するように強制するにはどうすればよいですか?
python - フルネームを含む文字列から関数を取得
次のような文字列があります。
ここで、eval() を実行しようとすると、まだ pwd をインポートしていないため例外が発生する可能性があります (または、持っている場合はそうでない可能性があります)。
そこで、文字列を "." で分割するパーサーを作成することにしました。そしてリストを取得します:
それがlis[0]
含まれていない場合、"("
または")"
私が呼び出す場合は、
そして再び評価。
同じものをより良くすることはできますか?
python - Python モジュール名にエイリアスを付ける方法 (下位互換性を維持して名前を変更する)
という名前の python パッケージがfoo
あり、インポートで使用します。
ここで、foo
モジュールの名前を別の名前に変更する必要があるbar
ので、次のようにします。
しかし、既存のコードとの下位互換性を維持したいので、古い ( foo.
) インポートも同様に機能し、インポートと同じことを行う必要がありますbar.
。
Python 2.7でこれをどのように達成できますか?
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 でテスト済み)
python - ランタイム パッチ python モジュール
インポートを置き換えながらモジュールを実行する方法を探しています。run_patched
これは、次の疑似コードで実装するのに欠けている魔法です。
単一のメソッドは、たとえば stating などの代入に置き換えることができることを知っているので、 のようなグローバルをいじってから、 でモジュールを実行ArgumentParser.parse_args = print
したくなりました。sys.modules
runpy.run_module
残念ながら、戦略全体はマルチスレッドのシナリオで機能するはずです。したがって、変更は実行されたモジュールにのみ影響し、プログラムの他の部分は、パッチが適用されていないモジュールをそのまま使用し続けることができます。