3.22 標準モジュール user

   

ポリシーとして、パイソンは、プログラムの起動時に、ユーザーが定義したコードを実行しません。(対話型セッションだけは、環境変数$PYTHONSTARTUPが定義されていれば、その中に定義されているスクリプトを実行します。)

しかし、プログラムやサイトによっては、ユーザーがカスタマイズの為のファイルを持ち、プログラムがリクエストしたときに実行させることは、便利かもしれません。このモジュールは、そのようなメカニズムを実装しています。このメカニズムを利用したいプログラムは、以下の文を実行する必要があります。

import user

userモジュールは、ユーザーのホームディレクトリ内に、".pythonrc.py"ファイルを探します。そしてそのファイルがオープンできれば、その(すなわち、userモジュールの)グローバルな名前空間において、(execfile() 関数を使って)実行します。 このフェーズの間は、エラーを取得できません。これは、userモジュールをインポートしようとしたプログラムの責任です。ホームディレクトリは、環境変数$HOMEによって決められます。もし定義されていなければ、カレントディレクトリとなります。

パイソンのバージョンによって異なる処理をさせたい場合は、ユーザーの".pythonrc.py"は、考えられる限りのsys.versionのテストをして下さい。

警告: ".pythonrc.py"ファイルに書き込む時は、とても慎重に行って下さい。 どんなプログラムがこのファイルを使うか分からないので、標準モジュールや標準関数の処理を変えることは、あまり良い考えとは言えません。

このメカニズムを使いたいプログラマーへの提案: ユーザーに、あなたのパッケージの為のオプションを明示させる簡単な方法は、 あなたのモジュール内でテストした".pythonrc.py"ファイルの中に、ユーザーに変数を定義させることです。 例えば、verbosity levelを持つspamモジュールは、変数user.spam_verboseを求めることができます。以下の通りです。

import user
try:
    verbose = user.spam_verbose  # user's verbosity preference
except AttributeError:
    verbose = 0                  # default verbosity

広くカスタマイズする必要があるプログラムは、program-specificカスタマイズファイルを読み込む方がベターです。

セキュリティやプライバシーに関するプログラムは、このモジュールをインポートすべきではありません。ユーザーは、".pythonrc.py"ファイルにあるコードを書くことで、簡単にプログラム内に入り込むことができます。

一般的なモジュールは、このモジュールをインポートすべきではありません。プログラムをインポートする処理を邪魔するかもしれないからです。

参照:

siteモジュール   (サイトを広くカスタマイズするメカニズム)

 

guido@python.org