2012-05-20 5 views
28

के साथ पाइथन में मॉड्यूल कैसे आयात करें I python 2.7.2 में importlib.import_module का उपयोग करने और अजीब त्रुटि में चलाने का प्रयास कर रहा हूं।importlib.import_module

 
    a 
    | 
    + - __init__.py 
     - b 
     | 
     + - __init__.py 
      - c.py 

a/b/__init__.py निम्नलिखित कोड है:

निम्नलिखित निर्देशिका संरचना पर विचार करें (। वास्तविक कोड "c" में एक नाम है)

 
    import importlib 

    mod = importlib.import_module("c") 

a.b आयात करने के लिए कोशिश कर रहा है पैदावार निम्नलिखित त्रुटि:

 
    >>> import a.b 
    Traceback (most recent call last): 
     File "", line 1, in 
     File "a/b/__init__.py", line 3, in 
     mod = importlib.import_module("c") 
     File "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py", line 37, in import_module 
     __import__(name) 
    ImportError: No module named c 

मुझे क्या याद आ रही है?

धन्यवाद।

उत्तर

44

रिश्तेदार आयात के लिए आप एक के लिए है) का उपयोग रिश्तेदार नाम ख) लंगर स्पष्ट रूप से प्रदान करते हैं:

importlib.import_module('.c', 'a.b') 
बेशक

, आप भी सिर्फ पूर्ण आयात के बजाय कर सकता है:

importlib.import_module('a.b.c') 
11

मुझे लगता है कि importlib.import_module('.c', __name__) का उपयोग करने के लिए बेहतर है क्योंकि आपको a और b के बारे में जानने की आवश्यकता नहीं है।

मैं यह भी सोच रहा हूं कि, यदि आपको importlib.import_module('a.b.c') का उपयोग करना है, तो क्यों न केवल import a.b.c का उपयोग करें?

+4

जब मॉड्यूल का नाम एक चर रहा है यह उपयोगी है। –

1

और भूल नहीं है प्रत्येक फ़ोल्डर/सबफ़ोल्डर के साथ एक __init__.py बनाने के लिए (भले ही वे खाली हैं)

+0

धन्यवाद! यह मेरी समस्या हल हो गया! – user

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

  • कोई संबंधित समस्या नहीं^_^