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
モジュール- サイト毎のカスタマイズを行う機構