スクリプトの初期動作追加

そんな大した話じゃないんだが・・・

Pythonスクリプト起動直後、何らかの初期値、環境等を構築したいと思う。例えば特定のモジュールを「import」したいとか、そんな事をスクリプトを起動後、毎回主導でやってたら面倒になると思う。

スクリプト起動直後の自動的に設定してみる。ちなみに「Dive in Python」に載ってる事を書くだけだけどね。「Dive in Python」って本は面白いね。他に出版されている本、特に著者が日本人の本は基本的すぎて読む気がしなかったんだよ。そんな情報はネットで十分乗ってますよって感じで、買うのをためらわせた。でも「Dive in Python」はお勧め。しかも、ネット上に公開されていているから、誰でも見ること可能。すばらしいよ、著者に感謝。

はじめに、

>>> import sys
>>> sys.getdefaultencoding()
'ascii'

次に、Pythonをインストールしたディレクトリに存在する「site-packages」({python_homedir}/lib/site-packages)に下記ファイルを格納。

# sitecustomize.py
import sys
sys.setdefaultencoding('iso-8859-1')

再度、スクリプト起動。

>>> import sys
>>> sys.getdefaultencoding()
'iso-8859-1'

おおお、すげーや、スクリプト起動時に「site-packages」にスクリプトファイルが存在すれば実行するんだね。このファイルに「import」とか記述しておけば、わざわざスクリプト側でインポートせずに済むのかな?あれ?なんか違う気がする。

スクリプト終了後、再度起動して確認。

>>> sys.getdefaultencoding()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> dir(sys)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined

思ったんだが、「site-packages」の「sitecustomize.py」で既に「import sys」を行っているんで、スクリプト起動後、再度「import sys」を行わなくても「sys」パッケージを利用できるんじゃないかと・・・無理だった。結局、「site-packages」ってのは何だ?実行したPython処理系の初期値を設定する事なのかな?例えば文字コードとか、あとは・・・だけど。

ちょっと最初に感じた超便利!ってのとは違うけど面白いね。では