2012-02-05 37 views
6

मैं एक पदानुक्रम है कि इस तरह दिखता है करना चाहते हैं (और यह इस तरह देखने के लिए है)आयात

main_folder\ 
    main.py 
    domain_sub_directory\ 
     __init__.py 
     domain.py 
    ui_sub_direcotory\ 
     __init__.py 
     menu.py 

मैं ui.py फ़्रोम सक्रिय करने की आवश्यकता main.py लेकिन फिर menu.py से domain.py acces। मैं उसे कैसे कर सकता हूँ ?

मैं मुख्य में ऐसा किया:

import ui_sub_directory.ui 

यह ui में:

import domain_sub_directory.domain 

लेकिन यूआई मॉड्यूल डोमेन मॉड्यूल नहीं देखता।

मैं क्या गलत कर रहा हूं?

बीटीडब्ल्यू क्या मुझे उस कक्षा को आयात करने की आवश्यकता है जिसके साथ मैं काम कर रहा हूं? और इसके बीच क्या अंतर है और:

from x import y 

?

* संपादित करें * उन लोगों के लिए जो समझ में नहीं आता मैं आयात करने के लिए से हैं:

folder1 /folder2 /folder3 /module1 

मैं इस आयात करना चाहते हैं:

folder1 /folder2 /module2 
+0

'आयात ui_sub_directory.ui()' पहले से ही गलत वाक्यविन्यास और तर्क है। – Gandaro

+0

इसके लगभग एक डुप्लिकेट: http://stackoverflow.com/questions/8951255/import-script-from-a-parent-directory –

+1

मैं आपको यह भी पूछ सकता हूं कि "सेब और नाशपाती का अंतर क्या है," जो होगा एक समान सवाल हो। वे पूरी तरह से अलग हैं। पहला गलत है, और दूसरा नहीं है। कृपया [आयात के बारे में पढ़ें] (http://docs.python.org/tutorial/modules.html)। – Gandaro

उत्तर

7

आप आयात बयानों में अंतर पूछा । इसका आंशिक रूप से नामस्थान का मामला जिसके लिए ऑब्जेक्ट आयात किया जाएगा, और आयात किए गए कोड की सटीक मात्रा को सीमित करने का एक तरीका भी है।

import os 
from os import path 

ओएस और ओएसपीएथ दोनों मॉड्यूल हैं। पहला ओएस मॉड्यूल और इसके सभी submodules आयात करता है। यह आपकी आवश्यकता से अधिक हो सकता है, और बड़ी पुस्तकालयों के लिए अनदेखा ओवरहेड हो सकता है। यद्यपि आप अभी भी os.path

के माध्यम से पथ तक पहुंच सकते हैं, दूसरा फॉर्म चुनिंदा रूप से केवल पथ मॉड्यूल आयात करने का एक तरीका है। इसके अतिरिक्त, os नामस्थान के तहत अपने कोड में आने के बजाय, यह रूट स्तर पर केवल path के रूप में रहता है।

इस लिंक Import Script from a Parent Directory तुम सब कुछ आप जानना चाहते हैं बता करता है, यहाँ कुछ और विशिष्ट जानकारी है:

:

# this will make your package available on your pythonpath 
sys.path.append("/path/to/main_folder") 

फिर अपने विभिन्न लिपियों जैसे अन्य मॉड्यूल संदर्भित कर सकते हैं main_folder के तहत करने के लिए सभी रिश्तेदार,

from ui_sub_direcotory import menu 

from domain_sub_directory import domain 

import main 

ये आपके पैकेज के अंदर सभी मान्य आयात हैं।

+0

यदि आप उत्तर नहीं देंगे तो कृपया कम से कम एक लिंक पोस्ट करें, मुझे अपने विचार व्यक्त करने के लिए पर्याप्त अंग्रेजी नहीं है, इसलिए मैं इसकी खोज नहीं कर सकता। मुझे सामान्य आयात मिल गया है, लेकिन "पिछड़ा" नहीं है। मुझे लगता है कि कम से कम दूसरे भाग के लिए धन्यवाद। – Kalec

+0

लिंक पहले ही टिप्पणी में पोस्ट कर दिए गए हैं। लेकिन मैंने कुछ और मदद – jdi

+0

के साथ अपडेट किया है, ठीक है, इतनी सारी सरल समस्याएं होने के लिए खेद है, लेकिन मुझे यह त्रुटि मिलती है: "सिंटेक्स त्रुटि: (यूनिकोड त्रुटि) 'यूनिकोडेस्केप' कोडेक 13-15 स्थिति में बाइट्स को डीकोड नहीं कर सकता: भागने में स्ट्रिंग का अंत अनुक्रम "मेरा पथ कैसा दिखता है? डी: \ Info \ ग्रहण कार्यक्षेत्र \ टेस्ट \ Test_src \ ui? या नहीं ? मुझे यह नहीं मिला – Kalec

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