2009-06-19 23 views
0

私はPythonモジュールa.pyとb.pyを同じディレクトリに持っています。 a.pyが別のディレクトリからインポートされたか、直接実行された可能性があるので、確実にa.pyからb.pyをインポートできますか?このモジュールは配布されるので、単一のパスをハードコードすることはできません。相対モジュールをインポートするPython

私は__file__、sys.pathとos.chdirで遊んでいましたが、面倒です。 __file__は必ずしも入手できるとは限りません。

おかげ

答えて

-1

両方のあなたの中に含まれているディレクトリを置きますpythonパス...またはその逆。

+0

私はsys.pathを使って何をしようとしているのですか? – hoju

6

は実際には、__file__は、インポートされたモジュールのために利用可能ですが、それはの.py /に.pycファイルからインポートされた場合にのみ。モジュールが内蔵されている場合には使用できませんたとえば:。inspectモジュールを使用して

>>> import sys, os 
>>> hasattr(os, '__file__') 
True 
>>> hasattr(sys, '__file__') 
False 
1

は、組み込みモジュールがより明確になります。

>>> import os 
>>> import sys 
>>> inspect.getfile(os) 
'/usr/local/lib/python2.6/os.pyc' 
>>> inspect.getfile(sys) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.6/inspect.py", line 407, in getfile 
    raise TypeError('arg is a built-in module') 
TypeError: arg is a built-in module 
関連する問題