6

インポートに失敗したモジュールがあるとしましょう (インポート時に例外があります)。

例えば。test.py次の内容で:

print 1/0

[明らかに、これは私の実際のファイルではありませんが、適切なプロキシとして代用できます]

ここで、python プロンプトで:

>>> import test
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test.py", line 1, in <module>
    print 1/0
ZeroDivisionError: integer division or modulo by zero
>>>

のパス/ファイルの場所を見つける最良の方法は何test.pyですか?

[各ディレクトリでファイルを探してPython のモジュール検索パスを繰り返すこともできますが、もっと簡単な方法があるに違いないと思います...]

4

1 に答える 1

15

impモジュールを使用します。これにはimp.find_module()、モジュールの名前をパラメーターとして受け取り、2 番目の項目がモジュールへのパスであるタプルを返す関数があります。

>>> import imp
>>> imp.find_module('test') # A file I created at my current dir
(<open file 'test.py', mode 'U' at 0x8d84e90>, 'test.py', ('.py', 'U', 1))
>>> imp.find_module('sys')  # A system module
(None, 'sys', ('', '', 6))
>>> imp.find_module('lxml') # lxml, which I installed with pip
(None, '/usr/lib/python2.7/dist-packages/lxml', ('', '', 5))
>>> imp.find_module('lxml')[1]
'/usr/lib/python2.7/dist-packages/lxml'
于 2012-06-01T20:09:17.977 に答える