2016-05-15 35 views
8

मैं पायथन के साथ शुरुआत कर रहा हूं। इससे पहले कि मैं शुरू, यहाँ मेरी अजगर फ़ोल्डर संरचनापायथन - मॉड्यूल नहीं मिला

-project 
----src 
------model 
--------order.py 
------hello-world.py 

है src के तहत मैं जो जो सामग्री का पालन order.py नामक एक अजगर फ़ाइल है model नाम का फ़ोल्डर:

class SellOrder(object): 
    def __init__(self,genericName,brandName): 
     self.genericName = genericName 
     self.brandName = brandName 

अगला मेरी hello-world.pysrc फ़ोल्डर के अंदर है order.py ऊपर, एक स्तर:

import model.order.SellOrder 

order = SellOrder("Test","Test") 

print order.brandName 

जब भी मैं चलाने python hello-world.py यह त्रुटि

Traceback (most recent call last): 
    File "hello-world.py", line 1, in <module> 
    import model.order.SellOrder 
ImportError: No module named model.order.SellOrder 

में परिणाम है वहाँ कुछ भी मैं याद किया है?

+0

यदि __init__.py? – user962206

+0

https://docs.python.org/2/tutorial/modules.html#packages –

+0

'__init __। Py' खाली हो सकता है या कोड हो सकता है। परियोजनाओं के लिए पैकेज स्तर पर अपनी प्राथमिक/सार्वजनिक कक्षाओं का पर्दाफाश करना आम बात है। आपके मामले में आप 'model.order import SellOrder' से' जोड़ सकते हैं ताकि अन्य कोड 'project.model.order आयात SellOrder' से' के बजाय प्रोजेक्ट आयात सेलरोडर से 'कर सकें। – miraculixx

उत्तर

4

पायथन में सभी मॉड्यूल में एक निश्चित निर्देशिका संरचना होनी चाहिए। You can find details here.

एक खाली model निर्देशिका के अंतर्गत __init__.py बुलाया फ़ाइल, ऐसे ही इस तरह के कुछ है कि आपके निर्देशिका संरचना लगेगा बनाएँ:

. 
└── project 
    └── src 
     ├── hello-world.py 
     └── model 
      ├── __init__.py 
      └── order.pyc 

इसके अलावा अपने hello-world.py फ़ाइल में निम्न के लिए इंपोर्ट स्टेटमेंट बदलने के लिए:

from model.order import SellOrder 

इसे ठीक करना चाहिए :)

पीएस : यदि आप किसी अन्य स्थान (उसी निर्देशिका शाखा में नहीं) में अपनी model निर्देशिका डाल रहे हैं, तो आपको sys.path का उपयोग करके पाइथन पथ को संशोधित करना होगा।

+3

भी यह अच्छा अभ्यास माना जाता है कि 'src' निर्देशिका न हो। यह भी समझ में आता है क्योंकि यदि आप कहीं और अपना कोड आयात करते हैं तो आपको 'project.model' आयात करने और 'project.src.model' आयात करने में सक्षम होना चाहिए। – miraculixx

+1

@miraculixx बिल्कुल! – RafazZ

0

आप पदानुक्रम में एक __init__.py नामित (प्रत्येक पक्ष पर दो अंडरस्कोर) हर फ़ोल्डर में फ़ाइल की जरूरत है, तो src/ में एक और model/ में से एक है। यह पाइथन यह जानना चाहता है कि इसे किसी विशेष फ़ोल्डर तक पहुंचना चाहिए। फाइलें प्रारंभिक निर्देशों को शामिल करने के लिए हैं, लेकिन यदि आप उन्हें खाली बनाते हैं तो भी यह हल हो जाएगा।

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