バリケンのPython日記 RSSフィード

2008-08-13

[] パッケージ(1)  パッケージ(1) - バリケンのPython日記 を含むブックマーク はてなブックマーク -  パッケージ(1) - バリケンのPython日記  パッケージ(1) - バリケンのPython日記 のブックマークコメント

Pythonにはモジュール名を階層化するしくみがあるよ。このモジュールの階層化のことを「パッケージ」と呼ぶみたい。

パッケージの階層化は、ディレクトリ(フォルダ)によって実現するよ。注意が必要なのが、あるフォルダを「パッケージが入ったディレクトリ」としてPythonに認識させるには、そのフォルダに「__init__.py」というファイルを置く必要があることだよ。

「__init__.py」にはパッケージの初期化コードを書くんだけど、通常は空のファイルで大丈夫みたいだよ。

パッケージの例として、たとえばGoogle App Enginenには、Googleのユーザー認証機能を利用できる「google.appengine.api.users」というモジュールがあるんだけど、モジュールの名前を見ると分かるけど、ドットで区切られた階層構造になっているよね。この「階層化のためのフォルダ」のことをパッケージと呼ぶみたいだよ。

google.appengine.api.users」モジュールはどのように配置されているかと言うと、

  1. ライブラリ検索パス中のどこかにあるgoogleフォルダ
  2. そのgoogleフォルダの中のappengineフォルダ
  3. そのappengineフォルダの中のapiフォルダ
  4. そのapiフォルダの中のusers.py

という感じで配置されていて、上記1.~3.のフォルダの中には、それぞれ「__init__.py」が配置されているよ。つまりパッケージとは「__init__.pyの置かれたフォルダ」のことと考えればいいみたい。

google.appengine.api.users」モジュールは、たとえば

from google.appengine.api import users

user = users.get_current_user()

のような感じで使うことが出来るよ。

トラックバック - http://python.g.hatena.ne.jp/muscovyduck/20080813