### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python v2.6.2 documentation »
- Python 標準ライブラリ »
- 28. Python ランタイムサービス »

# 28.14. `user` — ユーザー設定のフック

バージョン 2.6 で撤廃: `user` モジュールはPython 3.0では削除されます。

ポリシーとして、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したプログラムの動作にも影響してしまいます。

参考

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

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python v2.6.2 documentation »
- Python 標準ライブラリ »
- 28. Python ランタイムサービス »