[解決済み] Pythonモジュールの絶対的インポートと明示的相対的インポート
質問
Pythonアプリケーションでパッケージをインポートするのに適した方法について考えています。私はこのようなパッケージ構造を持っています。
project.app1.models
project.app1.views
project.app2.models
project.app1.views
輸入品
project.app1.models
と
project.app2.models
. 思い当たるのは2つの方法です。
絶対インポートを使って
import A.A
import A.B.B
で紹介されているように、明示的な相対インポートを使うこともできます。 Python 2.5 と PEP 328 で導入されました。 :
# explicit relative
from .. import A
from . import B
これを行うための最もpythonicな方法は何ですか?
どのように解決するのですか?
絶対的なインポート。PEP 8より。
パッケージ内のインポートのための相対的なインポートは非常に は推奨されません。 すべてのインポートには、常に絶対パッケージパスを使用してください。 PEP 328 [7]が Python 2.5 で完全に実装された今でさえ、明示的な相対インポートのスタイルは積極的に推奨されません。 そのスタイルである明示的な相対インポートは積極的に推奨されません。 絶対インポートの方が移植性が高く、通常はより読みやすいからです。
明示的な相対インポートは良い言語機能です(と私は思います)が、絶対インポートほど明示的ではありません。より読みやすい形式は
import A.A
import A.B.B
特に、いくつかの異なる名前空間をインポートする場合。パッケージ内からのインポートを含むよく書かれたプロジェクトやチュートリアルを見ると、たいていこのスタイルに従っています。
より明確にするために行ういくつかの余分なキー操作は、将来、他の人 (そしておそらくあなた) があなたの名前空間を理解しようとするときに、多くの時間を節約するでしょう (特に、パッケージ名の一部が変更された 3.x に移行した場合)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Python 3での相対インポート
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] if 節の終了方法
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?