PyDev

2012-06-30 16 views
6

में प्रोटोकॉल बफर का उपयोग करते समय आयात से अपरिभाषित चर मेरे पास एक पाइडेव प्रोजेक्ट है जो प्रोटोकॉल बफर का उपयोग करता है। प्रोटोकॉल बफर फ़ाइलें प्रोटोक कंपाइलर द्वारा जेनरेट की गई ज़िप फ़ाइल में स्थित हैं। जब मैं प्रोग्राम चलाता हूं तो सबकुछ काम करता है, हालांकि पीईडीवी ने प्रत्येक गणना निरंतर के लिए "आयात से अपरिभाषित चर" की रिपोर्ट की है। तो उदाहरण के लिए:PyDev

import model_pb2 

value = model_pb2.Expression(type = model_pb2.Expression.PARAMETER) 

यह एनम निरंतर "पैरामीटर" को एक अनिर्धारित चर के रूप में रिपोर्ट करता है। मेरे प्रोग्राम में कई दर्जन समान त्रुटियां हैं, और मैं उन्हें "ठीक से" ठीक करना चाहता हूं (यानी चेतावनी को दबाकर नहीं।)

उत्तर

0

क्या आपने अपने मजबूर बिल्डरों में "model_pb2" जोड़ने का प्रयास किया है? विवरण के लिए देखें: http://pydev.org/manual_101_project_conf2.html

+0

नहीं, कि मदद नहीं करता है। – Talin

+0

क्या यह हो सकता है कि क्या हो रहा है यह देखने के लिए स्रोत कोड के साथ उस ज़िप फ़ाइल को देखना संभव है? –

1

मुझे पता चला कि बिल्टिन के लिए काम कर सकते हैं, लेकिन केवल तभी जब सभी प्रोटो फाइलें बाहरी पुस्तकालय में स्थित हैं (http://pydev.org/manual_101_project_conf2.html देखें)।

यह काम करना चाहिए:

  1. ले जाएँ (या अनज़िप) संकलित आद्य फ़ाइलों Pydev परियोजना के बाहर एक निर्देशिका में model_pb2.py भी शामिल है।
  2. उसी निर्देशिका में एक खाली __init__.py फ़ाइल जोड़ें जो __bb2.py को यह सुनिश्चित करने के लिए कि इसे लाइब्रेरी के रूप में आयात किया जा सके।
  3. ग्रहण में, विंडोज़ -> प्राथमिकताएं -> pydev -> इंटरप्रेटर
  4. लाइब्रेरी में model_pb2.py के साथ निर्देशिका जोड़ें।
  5. मजबूर बिल्डिन में model_pb2 जोड़ें।

यदि आप स्वत: पूर्ण नहीं हैं, तो आप as described in this answer के बजाय इन त्रुटियों को अनदेखा करने के लिए ctrl + 1 का उपयोग कर सकते हैं। यह ग्रहण केप्लर और पायडेव 2.8 के साथ परीक्षण किया गया था।

0

मुझे प्रोटोबफ 2.6.1 और पायडेव 4.5.5 के साथ इस समस्या का सामना करना पड़ा। मैंने ऊपर दिए गए सुझावों की कोशिश की, दोनों ने मेरे मामले में मदद की। प्रोटोबफ एनम्स का उपयोग करते समय 'अपरिभाषित परिवर्तनीय' त्रुटियों से छुटकारा पाने के लिए क्या हुआ:

प्रोटोबफ मॉड्यूल की बजाय तत्काल प्रोटोबफ ऑब्जेक्ट पर enum तक पहुंचें।

मुझे यकीन है कि इस ओपी के उपयोग के मामले में लागू किया जा सकता है, तो नहीं कर रहा हूँ, लेकिन मेरा में यह जितना आसान था:

from myprotobuf_module import SomeProtobufMessage 

some_protobuf_object = SomeProtobufMessage() 
some_enum = some_protobuf_object.SOME_ENUM