モジュールとパッケージ


140

from 'x' import 'y'私がするたびに、どれが「モジュール」とみなされ、どちらが「パッケージ」とみなされ、なぜそれが逆ではないのか疑問に思っていましたか?


1
なぜそうではないのかについては、stackoverflow.com

1
答えは簡潔であり、正確に必要な知識を与えるため、私はこの質問に感謝しています。ドキュメントはすべて素晴らしくてダンディですが、それは冗長であり、OPが求めていたものよりも多くの情報を含んでいます。その特定の質問に対する答えが欲しかったのですが、以下の答えはまさに私が望んだものです。私たちの多くは、そのような正式な回答や詳細な回答を必要としません。
ティーキン

-知っているに関連する概念のPythonのクラス対モジュール
RBT

回答:


192

Pythonモジュールは単なるPythonソースファイルであり、クラス、関数、グローバル変数を公開できます。

別のPythonソースファイルからインポートされた場合、ファイル名はネームスペースとして扱われます。

Pythonパッケージは、単にPythonモジュールのディレクトリです。

たとえば、次のディレクトリツリーを想像してください/usr/lib/python/site-packages

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py

それであなたはそうするでしょう:

import mypackage.mymodule

または

from mypackage.mymodule import myclass

ああ、だから、ファイル名が名前空間として扱われると言うとき、あなたはこのようになりますか?最初の場合は「mymodule.var1」、2番目の場合は「myclass.var1」
ダークテンプラー

1
ではない正確に。パッケージはまだ名前空間の一部としてカウントされます。あなたが言ったことをしたい場合は、mypackage import mymoduleから行う必要があります。
ヤムマルコビッチ

名前空間パッケージについて何かを追加すると便利な場合があります。コードは必ずしもすべてが同じディレクトリツリーに表示される必要はありません。
holdenweb

@holdenwebそこに含まれるさまざまなメカニズムを直接使用したことがないため、専門家ではありません。新しい答えでそれについての詳細な説明を提供する場合、私はそれを私から参照します。
ヤムマルコビッチ

振り返ってみるとそれだけの価値があるには余りにも難解おそらくビット、
holdenweb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.