# 28.15. `user` --- ユーザー設定のフック

バージョン 2.6 で非推奨: `user` モジュールは Python 3 で削除されました。

ポリシーとして、Python は起動時にユーザー毎の設定を行うコードを実行することはしません (ただし対話型セッションで環境変数 `PYTHONSTARTUP` が設定されていた場合にはそのスクリプトを実行します)。

しかしながら、プログラムやサイトによっては、プログラムが要求した時にユーザーごとの標準設定ファイルを実行できると便利なこともあります。このモジュールはそのような機構を実装しています。この機構を利用したいプログラムでは、以下の文を実行してください:

    import user

`user` モジュールはユーザーのホームディレクトリの `.pythonrc.py` ファイルを探し、オープンできるなら (`user` モジュールの) グローバル名前空間で実行します(`execfile()` を利用します)。この段階で発生したエラーは catch されません。 `user` モジュールを import したプログラムに伝播します。ホームディレクトリは環境変数 `HOME` が仮定されていますが、もし設定されていなければカレントディレクトリが使われます。

ユーザーの `.pythonrc.py` では Python のバージョンに従って異なる動作を行うために `sys.version` のテストを行うことが考えられます。

ユーザーへの警告: `.pythonrc.py` ファイルに書く内容には慎重になってください。どのプログラムが利用しているかわからない状況で、標準のモジュールや関数の振る舞いを変えることはおすすめできません。

この機構を使おうとするプログラマへの提案: あなたのパッケージ向けのオプションをユーザーが設定できるようにするシンプルな方法は、 `.pythonrc.py` ファイルで変数を定義して、あなたのプログラムでテストする方法です。たとえば、 `spam` モジュールでメッセージ出力のレベルを変える `user.spam_verbose` 変数を参照するには以下のようにします:

    import user

    verbose = bool(getattr(user, "spam_verbose", 0))

(ユーザが `spam_verbose` をファイル `.pythonrc.py` 内で定義してないことに備えて `getattr()` の3 引数形式を使っています。)

大掛かりな設定の必要があるプログラムでは、プログラム固有の設定ファイルを読む方がずっと良いです。

セキュリティやプライバシーに配慮するプログラムではこのモジュールを import しないで ください。このモジュールを使うと、ユーザーは `.pythonrc.py` に任意のコードを書くことで簡単にプログラムに侵入することができてしまいます。

汎用のモジュールではこのモジュールを import しないで ください。 import したプログラムの動作にも干渉してしまいます。

参考

`site` モジュール

  サイト毎のカスタマイズを行う機構