らしい。
- Python起動後import site時に読み込まれる
- PYTHONPATHで指定されたディレクトリとそのディレクトリ下にある*.pthに登録されているサブディレクトリをsys.pathリストに登録する
- コンポーネントを呼び出す時、システムは環境変数PYTHONPATHを見ていない
様で、
- インタプリタ行でPYTHONPATHは指定出来ることは少ない
という感じで行こうと思う。#!/usr/bin/env python
site.addsitedir('/home/xxx/local/lib/python2.4/site-packages')
# main content
適当なコンポーネントをインストールしている。PYTHONPATH=/home/xxx/local/lib/python2.4/site-packages
となり、$ python -S
>>> import sys; print sys.path
['', '.', '/home/xxx/local/lib/python2.4/site-packages', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4/', '/usr/local/lib/python2.4/plat-freebsd6', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload']
>>> import site; print sys.path
['/home/xxx/local/lib/python2.4/site-packages/setuptools-0.6c7-py2.4.egg', ・・・, '/home/xxx/local/lib/python2.4/site-packages/wsgiref-0.1.2-py2.4.egg', '/home/xxx/local/lib/python2.4/site-packages', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4', '/usr/local/lib/python2.4/plat-freebsd6', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages']
dummy.eggというディレクトリが追加されていることが解る。$ mkdir ~/local/lib/python2.4/site-packages/dummy.egg
$ cat > ~/local/lib/python2.4/site-packages/dummy.pth
./dummy.egg
$ python
>>> import sys; sys.path
['', '/home/dozo/local/lib/python2.4/site-packages/setuptools-0.6c7-py2.4.egg', ・・・, '/home/dozo/local/lib/python2.4/site-packages', '/home/dozo/local/lib/python2.4/site-packages/dummy.egg', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4', '/usr/local/lib/python2.4/plat-freebsd6', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages']
一つ増えただけでサブディレクトリは登録されていないのが解るだろうか?$ python -S
>>> import sys; sys.path
['', '.', '/home/xxx/local/lib/python2.4/site-packages', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4/', '/usr/local/lib/python2.4/plat-freebsd6', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload']
>>> sys.path.append('/home/xxx/local/lib/python2.4/site-packages'); print sys.path
['', '.', '/home/xxx/local/lib/python2.4/site-packages', '/usr/local/lib/python24.zip', '/usr/local/lib/python2.4/', '/usr/local/lib/python2.4/plat-freebsd6', '/usr/local/lib/python2.4/lib-tk', '/usr/local/lib/python2.4/lib-dynload', '/home/xxx/local/lib/python2.4/site-packages']
$ python -S
>>> import os; print os.environ['PYTHONPATH']
/home/xxx/local/lib/python2.4/site-packages
>>> import setuptools
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named setuptools
>>> import site; import setuptools
>>>
と記述することで、#!/usr/bin/env PYTHONPATH=/home/xxx/local/lib/python2.4/site-packages python
ということだ。
- Python起動後import site時に読み込まれる
- PYTHONPATHで指定されたディレクトリとそのディレクトリ下にある*.pthに登録されているサブディレクトリをsys.pathリストに登録する(sys.path.append()と等価ではない)
- コンポーネントを呼び出す時、システムはPYTHONPATHを見ていない
http://hain.jp/htsrv/trackback.php/189
極論istの技術屋を始めて早幾年。 流れの速い業界の波にもまれながらも精一杯生きている様をとくとごらんあれ。