私はPythonモジュールa.pyとb.pyを同じディレクトリに持っています。 a.pyが別のディレクトリからインポートされたか、直接実行された可能性があるので、確実にa.pyからb.pyをインポートできますか?このモジュールは配布されるので、単一のパスをハードコードすることはできません。相対モジュールをインポートするPython
私は__file__
、sys.pathとos.chdirで遊んでいましたが、面倒です。 __file__
は必ずしも入手できるとは限りません。
おかげ
私はPythonモジュールa.pyとb.pyを同じディレクトリに持っています。 a.pyが別のディレクトリからインポートされたか、直接実行された可能性があるので、確実にa.pyからb.pyをインポートできますか?このモジュールは配布されるので、単一のパスをハードコードすることはできません。相対モジュールをインポートするPython
私は__file__
、sys.pathとos.chdirで遊んでいましたが、面倒です。 __file__
は必ずしも入手できるとは限りません。
おかげ
両方のあなたの中に含まれているディレクトリを置きますpythonパス...またはその逆。
は実際には、__file__
は、インポートされたモジュールのために利用可能ですが、それはの.py /に.pycファイルからインポートされた場合にのみ。モジュールが内蔵されている場合には使用できませんたとえば:。inspectモジュールを使用して
>>> import sys, os
>>> hasattr(os, '__file__')
True
>>> hasattr(sys, '__file__')
False
は、組み込みモジュールがより明確になります。
>>> 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
私はsys.pathを使って何をしようとしているのですか? – hoju