問題タブ [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 - Python ImportLib 'モジュール名がありません'
Python からインポートするモジュールとして変数を使用しようとしています。
ImportLib を使用して、テストを見つけることができました...
...そしてselect_moduleを印刷することで、スクリプトが正常に見つかったことがわかります。
ただし、コードでこの変数を使用してモジュールをインポートしようとすると、次のようになります。
プログラムは次のエラーで終了します。
メインディレクトリとスクリプトがある /test ディレクトリにinit .py ファイルを追加しようとしましたが、役に立ちませんでした。私が行方不明になっているのは、ばかげて小さなものだと確信しています-誰か知っていますか?
python - Python importlib import_module モジュールの相対インポート
この回答によると、次のような相対インポートimportlib
を使用できます。import_module
sklearn.feature_extraction.text の相対インポートが機能しないのはなぜですか?
text
それが次のモジュールであることを確認しました:
戻り値
編集
「機能しない」とは、モジュールをインポートしないことを意味します。
私はPython 3.4を使用しています
絶対的な方法が機能します:
相対方法はしません:
python - importlib.import_module でモジュールをインポートできません
importlib.import_module
モジュールを動的にインポートするために使用したい。私のコードは次のようになります:
Python コンソールでこれを正常に実行できます。しかし、これらのコードをファイルC:\Users\Administrator\Desktop>python test.py
で実行すると、機能しません。
しかし、db.py ファイルをスクリプト ファイルと同じディレクトリにコピーすると、機能します。理由がわかりません。
python - 「現在のディレクトリ」インポートによるモジュールのインポート
モジュールを動的にロードする次のコードがあります。
同じフォルダーにスクリプトをインポートしようとしている場合を除いて(同じ名前のパッケージの一部ではありません)、非常にうまく機能します。たとえば、スクリプトa.py
は実行していimport b
ます。エラーが発生しますImportError: No module named 'b'
(これは Python 3 で一般的です)。
しかし、私は本当にこれを解決する方法を見つけたいですか? 先頭に追加することで解決されます:
「a」をスクリプト化します。
私はそれが解決されることを望んでいましたが:
そうそう、その根拠は、適切なパッケージ/モジュールではなく、インタープリターで機能するいくつかのスクリプトであるモジュールのインポートもサポートしたいということです。
再現可能なコード:
~/example/a.py
~/example/b.py
~/somewhere_else/main.py (a/b とは別の場所)
次に、コマンド ラインで実行します。
その結果、ImportError: No module named 'b'
次のコードはそれを解決しますが、もちろんsys.path
、すべてのスクリプトに手動で入れることはできません。
~/example/a.py (2)
私がまだ考えていなかった解決策を他の人が持っていることを本当に願っています。
付録
python - importlib でモジュールが見つかりません
猫のテスト.py
ls プロジェクト/
python test.py
インポートされたモジュール (sys.modules) を一覧表示しても、モジュールプロジェクトは表示されません。
Python シェルを使用してbarをインポートできます。
何か案は?
python - モジュールを Celery タスクに動的にインポートする
Celeryタスクでモジュールを動的にインポートすることは可能ですか?
たとえばhello.py
、作業ディレクトリで呼び出されるモジュールがあります。
次の方法で動的にインポートできますimportlib
。
Celeryタスクから上記と同じことをしたい:
タスクの実行時に次のエラーが発生します。
print(os.listdir())
(上記のデバッグ出力の 6 行目) の出力から、間違いなく正しいディレクトリにあり、すぐそこにいることに注意してくださいhello.py
。
Celery タスク内からモジュールを動的にインポートすることは可能ですか?
python - importlib.util を使用してライブラリをチェックする際のエラー
Python 3.5.2 でスクリプトを実行しているコンピューターに nmap ライブラリがインストールされているかどうかを確認するために、importlib ライブラリを使用しようとしています。
使用しようとしてimportlib.util.find_spec("nmap")
いますが、次のエラーが表示されます。
誰かが私が間違っているところを教えてもらえますか?
編集
次のコードを使用して、関数を機能させることができました。
python - ソースから動的にインポートされたファイルの強制アンロード/分解
SOの長年のブラウザであり、ついに私自身の質問をしました!
そのため、特定の名前の python モジュールをディレクトリから再帰的に検索する自動化スクリプト/モジュールを作成しています。その名前のモジュールが見つかったら、それを動的にロードし、そこから必要なものを取り出してからアンロードします。モジュールを単純に削除しても、そのモジュールへのすべての参照が削除されないことに気付きました。別のものがどこかに残っていて、それがどこにあるのかわかりません。ソースコードをざっと見てみましたが、よくわかりませんでした。これは私が見ているもののサンプルです。大幅に簡略化されています。
Python 3.5.2 (Anaconda v4.2.0) を使用しています。私は importlib を使用していますが、それを使い続けたいと思っています。また、バニラのpython-3でこれを実行できるようにしたいと考えています。
ここのpythonドキュメントからソースからインポートしました(はい、これはPython 3.6ドキュメントであることを認識しています)。
私のメインドライバー...
そして私のサンプルモジュール...
出力:
「SO LONG A!」が見られると思っていました。「THE END」の前に印刷。では、私のモジュールへのこの他の隠された参照はどこにあるのでしょうか? 私のデルは、関数にラップされているという事実に無償であることを理解しています。削除とスコープを明示的にしたかっただけです。a.py を完全にアンロードするにはどうすればよいですか? a.py のような大量のモジュールを動的にロードすることを計画していますが、必要以上にそれらを保持したくありません。足りないものはありますか?
unit-testing - 異なる呼び出しパターンをテストする
cookiecutterによって生成されたプロジェクトが複数の呼び出しパターンでどのように動作するかをテストしたいと考えています。
次の生成されたプロジェクトが与えられた場合
の内容__init__.py
:
の内容__main__.py
:
( の問題について読みましたが__main__.__spec__
、これはこの質問の内容ではありません。実際、これらの問題の回避策を TDD でテストしたいと思います)
ここで、生成されたプロジェクトの構造と場所がわかっているテストを作成します (たとえば、pytest フィクスチャを介して利用できます)。
おまけ: sys.argv
?の値を注入する