White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

import時のos.chdirは意味がない?

http://d.hatena.ne.jp/showyou/20090106#1231244154

つまり、os.chdirするとかPYTHONPATHにプロジェクトのTOPのパスを指定しておけば子でないフォルダでもいいわけか。

とか書いてるが、どうも怪しい。

下記のディレクトリ構成だったときに

  • python_import_test
    • a
      • a.py
      • ab.py
    • b
    • common
      • lib.py

次のコードを実行すると、

#!/usr/bin/env python
execPath = "/home/yuki/tmp/python_import_test/"

import os
os.chdir(execPath)
print os.getcwd()

import ab
from common import lib

ab.py(中身はprint("ab.py"))は読まれるくせにcommon.lib.py(中身はprint("common"))は読まれない。しかし

/home/yuki/tmp/python_import_test
ab.py
Traceback (most recent call last):
File "a/a.py", line 9, in
from common import lib
ImportError: No module named common

sys.path.insert(0,'path')の方がよさそう。

#!/usr/bin/env python
execPath = "/home/yuki/tmp/python_import_test/"

import os,sys
sys.path.insert(0,execPath)

import ab
from common import lib

ab.py
common.py