配布パッケージ vs. インポートパッケージ#

数多くの異なったコンセプトが同じ "パッケージ" の名で呼ばれています。このページでは、"配布パッケージ" と "インポートパッケージ" という、関連してはいるが全く異なる二つの Python のパッケージングの意味を明らかにします。

配布パッケージとは何でしょうか?#

配布パッケージとは、インストール可能な一片のソフトウェアです。ほとんどの場合、これは "プロジェクト <project>" と同義です。 pip install pkg とタイプする時、あるいは、 pyproject.tomldependencies = ["pkg"] と書く時、 pkg のところには配布パッケージの名前を書きます。Python のライブラリやツール類の集約された源として最も広く知られている PyPI で検索したり閲覧する時、あなたが目にするものは配布パッケージのリストです。あるいは、"配布パッケージ" という言葉があるプロジェクトの特定のバージョンを内包した特定のファイルのことを指す場合もあります。

Linux の世界では、 "配布パッケージ <distribution package>" が "ディストロパッケージ <distro package>" か単に "パッケージ <package>" と短縮形で呼ばれることが通常であり、 Linux ディストリビューション のシステムパッケージ管理者によって提供される何かのことであって、異なる意味で使われているということは意識しておいてください。

パッケージをインポートする、とは何でしょうか?#

インポートパッケージは Python モジュールです。したがって、 Python コードに import pkg もしくは from pkg import func と書く時、pkg の部分はインポートパッケージの名称です。より精確には、インポートパッケージは、サブモジュールを内包することができる特別な Python モジュールです。通常は、インポートパッケージはファイルシステム上のディレクトリであって、モジュールを .py の形で含み、サブパッケージをサブディレクトリの形で含むものです。

インポートパッケージを提供する配布パッケージをインストールするや否や、インポートパッケージを使用することができます。

配布パッケージの名称とインポートパッケージの名称は、どのように比較されるのでしょうか?#

インポートパッケージは、その名称として正当な Python 識別子 (Python の説明文書の中に exact rules が見つかるでしょう) [1] を持っているべきです。特に、単語間の区切りにアンダースコア _ を使い、また、大文字小文字を区別します。

他方で、配布パッケージはハイフン - でもアンダースコア _ でも使うことができます。また、 名前空間パッケージ のサブパッケージをパッケージングするために使われることがあるドット . を含むこともできます。ほとんどの目的においては、大文字小文字や -_ の違いをを区別せず、例えば、 pip install Awesome_Packagepip install awesome-package は同じものです (詳細な規則は 名前正規化仕様 にあります) 。