pydev

2011-10-31 16 views
6

में किसी अन्य प्रोजेक्ट से आयात करना मैं काफी समय से चारों ओर देख रहा हूं लेकिन मुझे जवाब नहीं मिल रहा है। इसी तरह के प्रश्न तीसरे पक्ष के पुस्तकालयों और सभी के साथ कुछ मुश्किल मामलों से संबंधित हैं, लेकिन मेरी स्थिति पाठ्यपुस्तक-सरल प्रतीत होती है। फिर भी मैं यह नहीं समझ सकता कि यह कैसे काम करता है।pydev

मैं ग्रहण 3.5.2, पाइडेव 2.2.0 का उपयोग कर रहा हूं, जो उबंटू 11.04 मशीन पर चल रहा है।

मेरा मामला सरल लगता है: मैं एक पैकेज को अपनी परियोजना के रूप में लिखना चाहता हूं, और फिर मैं इस पैकेज का उपयोग किसी अन्य प्रोजेक्ट में लिखना चाहता हूं।

मैं कैसे सेटअप Pydev मैं, और "एप्लिकेशन" के भीतर से इस दो परियोजनाओं "मूल" (पैकेज) और "एप्लिकेशन" (जो कोर पैकेज का उपयोग करता है) हो सकता है इतना है कि करना चाहिए:

import core 

?

  • मैंने ऐप के प्रोजेक्ट संदर्भों में कोर जोड़ा है लेकिन यह कुछ भी नहीं करता है।
  • मैंने सोर्स फ़ोल्डर्स में/कोर/जोड़ा है (मुझे इसके लिए मजबूर होना पड़ा क्योंकि सूची में दिखाया गया नहीं था), यह काम नहीं किया (इसलिए मैंने इसे हटा दिया)।
  • मैंने बाहरी पुस्तकालयों में/पूर्ण/पथ/से/कोर जोड़ा है, यह अभी भी काम नहीं करता है।

"काम नहीं करता" से मेरा मतलब है कि मुझे हमेशा "अनसुलझा आयात: कोर" मिलता है।

विचार?

उत्तर

8

बशर्ते आपके पास 2 परियोजनाएं हैं जो PYTHONPATH ठीक से सेट (स्रोत फ़ोल्डर्स के माध्यम से) हैं, तो इसे केवल एक परियोजना संदर्भ जोड़ने में काम करना चाहिए।

हो सकता है कि एक उदाहरण मदद कर सकते हैं ...

उदा .:

project1 
project1/src <-- this should be set as the source folder 
project1/src/core 
project1/src/core/__init__.py 

project2 
project2/src <-- this should be set as the source folder 
project2/src/app 
project2/src/app/__init__.py 

और फिर Project2 गुण> परियोजना संदर्भ संपादित करें और 'Project1' Project2 से Project1 उपयोग करने में सक्षम होने के लिए।

+3

धन्यवाद, मैं यह अब काम करने के लिए मिल गया है! 1) मुझे प्रोजेक्ट 1 से परियोजना 1 से प्रोजेक्ट 1 में कुछ भी जोड़ने की ज़रूरत नहीं है। 2) मेरे प्रोजेक्ट "कोर" का नामकरण पर्याप्त नहीं है, भले ही उसके पास __init__.py है: मुझे उचित पैकेज "कोर" चाहिए। 3) इसके अलावा, ग्रहण (फ़ाइल/पुनरारंभ) को पुनरारंभ करना आवश्यक था। वाह! – Niriel

0

मुझे परियोजना संदर्भ जोड़कर यह काम नहीं मिला। हालांकि, मुझे इसे पहले हटाने और फिर परियोजना के लिए pydev प्रोजेक्ट प्रकृति को जोड़कर काम करना पड़ा, और फिर, परियोजना संदर्भ सेट करें।

1

मैं थोड़ी देर के लिए एक ही समस्या में था।
अब मुझे पता चला है कि मैं अन्य परियोजनाओं में मॉड्यूल और पैकेज से कक्षा या फ़ंक्शन कैसे आयात कर सकता हूं।
मैंने खुद को इस से गूंगा पाया क्योंकि यह हमेशा आसान है।

निष्कर्ष!
आपको केवल 'परियोजना संदर्भ', फ़ाइल/गुण/परियोजना संदर्भों में प्रोजेक्ट नाम की जांच करना है।
आयात उपयोग के संदर्भ में, अन्य प्रोजेक्ट का संदर्भ देना वही है जैसे आप अपनी वर्तमान प्रोजेक्ट निर्देशिका में सभी फाइलें या मॉड्यूल डालते हैं। मैं विंडोज 7 पर liclipse_1.0.0_win32.x86_64 का उपयोग कर रहा हूं।

मुझे उदाहरण दिखाएं।
दो परियोजना ए और बी हैं और प्रोजेक्ट ए में मॉड्यूल a1.py और पैकेज 'एम' है।
आप बी प्रोजेक्ट पर काम कर रहे हैं और प्रोजेक्ट पेड़ के बाद संदर्भ में एक परियोजना की जांच कर रहे हैं।

|-- A 
| |-- M 
| | |-- __init__.py 
| | `-- m1.py 
| `-- a1.py 
`-- B 
    `-- b1.py 

# a1.py 
def say_a(): 
    print "I'm A" 

# m1.py 
def say_m(): 
    print "I'm M" 

अब आप प्रोजेक्ट ए को निम्न की तरह एक्सेस कर सकते हैं।

#b1.py 
import a1 
from M import m1 
a1.say_a() 
m1.say_m() 

वास्तव में पाइथन आयात विवरण मेरे लिए थोड़ा अजीब है कि आप एक ही काम करने के लिए अन्य तरीका ढूंढ सकते हैं।
इसके अलावा, यदि आप लिनक्स कमांड लाइन से b1.py चलाने के लिए चाहते हैं तो इसे देखें।

~/tmp/pydemo/बी $ PYTHONPATH = ../ए अजगर

b1.py
+0

यह मेरे लिए काम किया, धन्यवाद – Sergio

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