2012-06-01 8 views
6

मान लें कि मेरे पास एक मॉड्यूल है जो आयात करने में विफल रहता है (इसे आयात करते समय एक अपवाद है)।मैं असफल पायथन आयात के लिए पथ कैसे ढूंढूं?

उदाहरण के लिए। निम्नलिखित सामग्री के साथ test.py:

print 1/0 

[जाहिर है, यह मेरा वास्तविक फ़ाइल नहीं है, लेकिन यह एक अच्छा प्रॉक्सी के रूप में में खड़े होंगे]

अब अजगर प्रॉम्प्ट पर,:

>>> 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 के माध्यम से पुनरावृति सकता है फ़ाइल के लिए प्रत्येक निर्देशिका में देख, लेकिन मुझे लगता था एक सरल तरीका होना चाहिए ...]

उत्तर

14

imp मॉड्यूल का उपयोग करें।

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

बिल्कुल सही: यह एक समारोह, imp.find_module() है, जो एक मॉड्यूल के नाम एक पैरामीटर के रूप प्राप्त करता है और एक टपल, जिसका दूसरे मद मॉड्यूल के लिए पथ है देता है। मुझे पता था कि एक साधारण जवाब होना था (बस इसे नहीं मिला)! – Gerrat

+0

क्या एक शैतानी सरल दृष्टिकोण है। –

संबंधित मुद्दे