sitecustomize.py

Python の実行環境は起動時に、ユーザが環境を設定するためのスクリプトとして lib/site-packages/sitecustomize.py を実行する。
Zope 固有の設定を書くのは何となくイヤなのでパスの通ったディレクトリから sitecustomize.py を探して実行するようにする。

import sys
from os import path
import filecmp

sitecustomize = 'sitecustomize.py'
d = path.split(__file__)[0]

#print('start in %s' % d)
for p in sys.path:
	#print('dive into %s' % p)
	try:
		if filecmp.cmp(p, d) or p == d:
			continue
	except OSError:
		continue
	filename = path.join(p, sitecustomize)
	try:
		fp = open(filename, 'rb')
		source = fp.read()
		fp.close()
	except IOError:
		continue
	compiled = compile(source.replace('\r\n', '\n').replace('\r', '\n'), filename, 'exec')
	#print('exec %s' % filename)
	exec(compiled)

でも Zope インスタンスディレクトリの lib/pythonZope のスタートアッププロセスが sys.path に追加するので、このコードでは独自のスタートアップルーチンを呼べない罠。