python - 如何找到失败的 python 导入路径?

标签 python exception-handling module

假设我有一个无法导入的模块(导入时出现异常)。

例如。 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's module search path在每个目录中查找文件,但我认为必须有更简单的方法...]

最佳答案

使用 imp模块。它有一个功能,imp.find_module() ,它接收模块名称作为参数并返回一个元组,其第二项是模块的路径:

>>> 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'

关于python - 如何找到失败的 python 导入路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10856632/

相关文章:

c++ - C++构造函数抛出异常

python - 导入 python 模块时如何解决 KeyError?

module - Prestashop从产品名称获取产品默认图片?

Python如何使 ping -t 脚本无限循环

python - 如何进行 ttk.Combobox 回调

asynchronous - net不在时如何处理socket异常?

c# - 当异常处理所有其他代码路径时,方法末尾的 'return true' 是不好的做法吗?

haskell - 如何导出类型类?

python - Python获取语音转文本语音音频数据

python - 在 Lubuntu 14.04 上安装 Python3.4.3 时出现错误/测试失败