問題タブ [python-import]
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で呼び出すにはどうすればよいですか?
ここにすべてのコードを貼り付けることができるかどうかはわかりませんが、この git repoのコードを見ています。
例を見ると、次のようになります。
EC2
...しかし、クラスはありません。ただし、 を にマップするlibcloud\providers.py
dict があるように見えます。によって正しいマッピングが計算されますが、そのメソッドはどこにも呼び出されていないようです。EC2
EC2NodeDriver
libcloud\drivers\ec2.py
get_driver(provider)
私は明らかにPythonは初めてですが、プログラミングは初めてです。これを理解するためにドキュメントで何を調べるべきかさえわかりません。
python - 別のパスからインポートされた場合、モジュールが再インポートされました
私が取り組んでいる大きなアプリケーションでは、複数の人が同じモジュールを異なる方法でインポートします。たとえば、インポートxまたはyからインポートxの副作用は、xが2回インポートされ、誰かがグローバル属性に依存している場合、非常に微妙なバグを引き起こす可能性があります
たとえば、mymodule.py、 main.py 、 init.pyの3つのファイルを持つパッケージmypakcageがあるとします。
mymodule.pyの内容
main.pyの内容
印刷します
2つの異なるモジュールに2つのリストがあるため、同様にクラスAは異なります。クラス自体が異なる方法で処理されるため、私には十分に深刻に見えます。たとえば、以下のコードはFalseを出力します。
質問:
これを回避する方法はありますか?ただし、モジュールを一方向にインポートする必要があります。これをPythonインポートメカニズムで処理することはできません。djangoコードやその他の場所でも、これに関連するいくつかのバグが見られます。
django - Django スタートアップのインポートにより逆が発生する
これは孤立した問題かもしれませんが、誰かがそれに対処するための優雅なアプローチについて考えている場合に備えて質問したいと思います。
セットアップは次のとおりです。
問題は、django が URL の構築を完了する前にリバースを試行すると、shortcuts.py によって例外がスローされることです。ただし、views.py はまだ Shortcuts.py をインポートする必要はありません (mood_dispatcher が実際に呼び出される場合にのみ使用されます)。明らかな初期の解決策は次のとおりです。1) ショートカットをインラインでインポートする (スタイル的にあまり良くない) 2) Shortcuts.py で MOODS を遅延ビルドする (作業が増えるだけ)
私が理想的に望むのは、views.py の上部で、「URL の読み込み時以外はショートカットをインポートする」と言うことができることです。
python - Python での循環インポートの依存関係
次のディレクトリ構造があるとします。
a
パッケージのに__init__.py
、c
パッケージがインポートされます。しかし、c_file.py
インポートしa.b.d
ます。
をインポートしようとすると、b
存在しないと言ってプログラムが失敗します。(そして、インポートの途中だったので、実際には存在しません。)c_file.py
a.b.d
この問題はどのように解決できますか?
python - Pythonのローカルインポートステートメント
importステートメントをそれを使用するフラグメントの近くに配置すると、依存関係がより明確になり、読みやすくなると思います。Pythonはこれをキャッシュしますか?気にする必要がありますか?これは悪い考えですか?
もう少し正当化:ライブラリの難解なビットを使用するメソッドの場合ですが、メソッドを別のファイルにリファクタリングすると、実行時エラーが発生するまで外部依存関係を見逃したことに気づきません。
python - PyDevエディターにエラーを選択的に無視させるにはどうすればよいですか?
EclipseでPyDevを使用して、Jythonコードを記述しています。私はこのようなことをする必要がある多くの例を持っています:
問題は、PyDevが常にこれをエラーとしてフラグを立て、「未解決のインポート:ISubInterface」と言うことです。コードは問題なく機能します。コードの横にこれらの小さな白/赤のXマークを付けたくないだけで、[問題]タブにこれらのエラーが散らばっています。
「#pylint:disable-msg = E1101」のようなコメントを振りかけてPyLintを無視させるのと同様に、マジックコメントなどを行の最後に追加してPyDevに誤ったエラーを無視させる方法はありますか?エラー?
また、JythonでJavaインターフェイスを使用する場合、私が間違っている可能性があります。その場合、少しのガイダンスをいただければ幸いです。
python - Python(およびDjango)のベストインポートプラクティス
コードをインポートするさまざまな方法のうち、他の方法と比較して使用するのが好ましい方法はありますか?このリンクhttp://effbot.org/zone/import-confusion.htmは、簡単に言うと次のように述べています。
通常の状況で、または何をしているのかわからない場合を除いて、MyClassをインポートするための推奨される方法ではありません。(むしろ、より良い方法は次のようになります:
次に、コードでMyClassにアクセスするには
)。
要するに、上記のリンクは、モジュールの一部だけでなく、モジュールからすべてをインポートする方が通常は良いと言っているようです。
しかし、私がリンクしたその記事は本当に古いものです。
また、少なくともDjangoプロジェクトのコンテキストでは、モジュール全体ではなく、使用するクラスのみをインポートする方がよいと聞きました。このフォームは、循環インポートエラーを回避するのに役立つか、少なくともdjangoインポートシステムの脆弱性を軽減すると言われています。Django自身のコードは、「importx」よりも「fromximporty」を好むようであることが指摘されました。
私が取り組んでいるプロジェクトが__init__.py
...の特別な機能を使用していないと仮定すると(すべての__init__.py
ファイルが空です)、どのインポート方法を優先する必要がありますか、またその理由は何ですか?
python - Pythonパッケージの一部であるすべてのモジュールを一覧表示しますか?
Pythonパッケージの一部であるすべてのモジュールを見つける簡単な方法はありますか?私はこの古い議論を見つけましたが、これは実際には決定的なものではありませんが、os.listdir()に基づく独自のソリューションを展開する前に、明確な答えが欲しいです。
python - Python:「from X import Y」でインポートされたコンポーネントYをリロードしますか?
Python では、 を使用してインタープリター セッションでモジュール X をインポートするimport X
と、モジュールが外部で変更され、モジュールを でリロードできますreload(X)
。その後、通訳セッションで変更が利用可能になります。
を使用してモジュール X からコンポーネント Y をインポートするときに、これも可能かどうか疑問に思っていますfrom X import Y
。
reload Y
Y はモジュール自体ではなく、モジュール内のコンポーネント (この場合はクラス) にすぎないため、ステートメントは機能しません。
インタープリター セッションを終了する (またはモジュール全体をインポートする) ことなく、モジュールの個々のコンポーネントを再読み込みすることはまったく可能ですか?
編集:
明確にするために、質問は、パッケージ X からのモジュール Y ではなく、モジュール Xからクラスまたは関数 Yをインポートし、変更をリロードすることです。
python - `importmodule`は`frommodule import function`よりも優れたコーディングスタイルですか?
from module import function
FMIFコーディングスタイルと呼びましょう。
import module
IMコーディングスタイルと呼びましょう。
from package import module
FPIMコーディングスタイルと呼びましょう。
IM + FPIMがFMIFよりも優れたコーディングスタイルと見なされるのはなぜですか?(この質問のインスピレーションについては、この投稿を参照してください。)
IMよりもFMIFを好むようになるいくつかの基準は次のとおりです。
- コードの短さ:短い関数名を使用できるため、1行あたり80列の規則に従うことができます。
- 読みやすさ:
chisquare(...)
より読みやすいように見えますscipy.stats.stats.chisquare(...)
。これは主観的な基準ですが、ほとんどの人が同意すると思います。 - リダイレクトのしやすさ:FMIFを使用していて、後で何らかの理由でPythonをリダイレクトして定義するの
function
ではalt_module
なく、module
1行だけ変更する必要がある場合:from alt_module import function
。IMを使用する場合は、コードの多くの行を変更する必要があります。
IM + FPIMがFMIFよりも優れている理由はすべて興味がありますが、特に、ここで説明する次の点について詳しく説明したいと思います。
IMの長所:
- テストでのモック/注入の容易さ。(私は最近、この用語の意味を学びましたが、モックについてはあまり詳しくありません。ここで、IMがFMIFよりも優れていることを示すコードを示していただけますか?)
- 一部のエントリを再定義することにより、モジュールを柔軟に変更する機能。(これはIMに対するFMIFの利点のように思われるため、私は何かを誤解しているに違いありません。上記のFMIFを支持する私の3番目の理由を参照してください。)
- データのシリアル化とリカバリに関する予測可能で制御可能な動作。(IMまたはFMIFの選択がこの問題にどのように影響するかは本当にわかりません。詳しく説明してください。)
- FMIFが「私の名前空間を汚染する」ことは理解していますが、否定的な言い回しであるだけでなく、これがコードを具体的にどのように傷つけるかについては理解していません。
どうもありがとう。