ポリシーとして、Pythonは起動時にユーザー毎の設定を行うコードを実行することは しません(ただし対話型セッションで環境変数PYTHONSTARTUPが設定されて いた場合にはそのスクリプトを実行します。)。
しかしながら、プログラムやサイトによっては、プログラムが要求した時に ユーザーごとの設定ファイルを実行できると便利なこともあります。このモジュー ルはそのような機構を実装しています。この機構を利用したいプログラムでは、 以下の文を実行してください。
import user
userモジュールはユーザーのホームディレクトリの .pythonrc.pyファイルを探し、オープンできるならグローバル名前空間 で実行します(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したプログラムの動作にも影響してしまいます。
参考: