2011-06-11 11 views
11

जब मैं अपने प्रोजेक्ट में igraph पैकेज आयात करता हूं, तो मुझे एक विशेषता त्रुटि मिलती है। यह केवल परियोजना निर्देशिका में होता है:igraph आयात करते समय AttributeError को हल करने के लिए कैसे करें?

[12:34][~]$ python2 
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import igraph 
>>> 

[12:34][~]$ cd projectdir/ 
[12:34][projectdir]$ python2 
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import igraph 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/igraph/__init__.py", line 42, in <module> 
    import gzip 
    File "/usr/lib/python2.7/gzip.py", line 36, in <module> 
    class GzipFile(io.BufferedIOBase): 
AttributeError: 'module' object has no attribute 'BufferedIOBase' 
>>> 

परियोजना निर्देशिका में कोई फ़ाइल igraph.py है:

[12:34][projectdir]$ ls -alR | grep igraph | wc -l 
0 

और कोई परिपत्र आयात कर रहे हैं।

मैं इस त्रुटि को कैसे हल कर सकता हूं?

उत्तर

27

सबसे अधिक संभावना है, io~/projectdir में या प्रोजेक्ट कॉन्फ़िगर करने वाले पथों में से एक मॉड्यूल है। gzip igraph द्वारा आयातित मॉड्यूल

import io 

साथ शुरू होता है और निर्मित कब मॉड्यूल, अपनी परियोजना के एक नहीं की उम्मीद है। io निर्देशिका, या io.py या io.pyc देखें। यह किसी अन्य निर्देशिका के लिए sys.path की जांच करने में भी मदद कर सकता है (शायद ~/projectdir के बाहर) जिसमें io नामक मॉड्यूल हो सकते हैं।

+3

धन्यवाद। मेरे पास प्रोजेक्ट में पैकेज 'io' था। अगली बार मुझे पता है कि इसे कैसे हल करें। – any1

+2

तो यही कारण है ... संकल्प क्या है? ऐसा लगता है कि स्पष्ट समाधान परियोजना में 'io' पैकेज का नाम बदलना है, लेकिन क्या कोई और समाधान है जिसे आईओ पैकेज का नाम बदलने की आवश्यकता नहीं है? – jmetz

+2

@mutzmatron आपकी कस्टम 'io' छोड़ना मुसीबत के लिए एक नुस्खा है, इसलिए आपको वास्तव में इसका नाम बदलना चाहिए। जबकि आप * sys.path' अस्थायी रूप से संशोधित कर सकते हैं, यह अविश्वसनीय रूप से भंगुर है। किसी भी मामले में, आपको पूर्ण आयात का उपयोग करना चाहिए, जैसे 'myproject.div.io_utils' आयात करें – phihag

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