2012-06-01 19 views
6

Giả sử tôi có một mô-đun không nhập được (có ngoại lệ khi nhập nó).Làm cách nào để tìm đường dẫn cho nhập python bị lỗi?

ví dụ: test.py với các nội dung sau:

print 1/0 

[Rõ ràng, đây không phải là tập tin thực tế của tôi, nhưng nó sẽ đứng như một proxy tốt]

Bây giờ, tại dấu nhắc 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 
>>> 

Cách tốt nhất để tìm đường dẫn/vị trí tệp là test.py là gì?

[tôi có thể lặp qua Python's module search path nhìn vào từng thư mục cho các tập tin, nhưng tôi nghĩ rằng phải có một cách đơn giản ...]

Trả lời

14

Sử dụng các module imp. Nó có một hàm, imp.find_module(), nhận được như một tham số tên của một mô-đun và trả về một bộ tuple, có mục thứ hai là đường dẫn đến mô-đun:

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

Hoàn hảo. Tôi biết phải có một câu trả lời đơn giản (không thể tìm thấy nó)! – Gerrat

+0

Cách tiếp cận đơn giản một cách ma quái. –

Các vấn đề liên quan