2012-10-09 23 views
24

मैंने अपनी होम निर्देशिका में स्थापित किया है।गायब पायथन बीजी 2 मॉड्यूल

[[email protected]~ dev1]$ /home/spatel/python-2.7.3/bin/python -V 
Python 2.7.3 

मैं एक स्क्रिप्ट जो आवश्यक अजगर 2.7.x संस्करण चलाने के लिए कोशिश कर रहा हूँ, और मैं याद आ रही BZ2 त्रुटि

[[email protected]~ dev1]$ ./import_logs.py 
Traceback (most recent call last): 
    File "./import_logs.py", line 13, in <module> 
    import bz2 
ImportError: No module named bz2 

मैं BZ2 मॉड्यूल स्थापित करने के लिए कोशिश की है हो रही है, लेकिन मैं त्रुटि

के बहुत सारे मिल गया
[[email protected] python-bz2-1.1]$ /home/spatel/python-2.7.3/bin/python setup.py install 
    ... 
    ... 
    ... 
    bz2.c:1765: error: âBZ_FINISH_OKâ undeclared (first use in this function) 
    bz2.c:1765: warning: comparison between pointer and integer 
    bz2.c:1771: error: âPyMemberDefâ has no member named âavail_outâ 
    bz2.c:1778: error: âPyMemberDefâ has no member named ânext_outâ 
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_hi32â 
    bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_lo32â 
    bz2.c:1778: error: invalid operands to binary + 
    bz2.c:1778: warning: statement with no effect 
    bz2.c:1779: error: âPyMemberDefâ has no member named âavail_outâ 
    bz2.c:1779: error: âPyMemberDefâ has no member named ânext_outâ 
    bz2.c:1779: error: invalid operands to binary - 
    bz2.c:1779: error: invalid operands to binary - 
    bz2.c:1779: warning: statement with no effect 
    bz2.c:1783: error: âPyMemberDefâ has no member named âavail_outâ 
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_hi32â 
    bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_lo32â 
    bz2.c:1784: warning: passing argument 2 of â_PyString_Resizeâ makes integer from pointer without a cast 
    error: command 'gcc' failed with exit status 1 

उत्तर

49

संभवतः आपने स्रोत से पायथन बनाया है, तो आपके पास bz2 शीर्षलेख नहीं हैं।

उन्हें Ubuntu/डेबियन पर स्थापित करें:

sudo apt-get install libbz2-dev 

फेडोरा:

sudo yum install bzip2-devel 

और अजगर फिर से निर्माण। आप देख सकते हैं कि पाइथन कॉन्फ़िगर/निर्माण करते समय कई पुस्तकालयों के लिए जांच करता है, अगर आप उनमें से कुछ याद करते हैं तो आपको शायद आपके मामले में bz2 जैसे libs के लिए कोई समर्थन नहीं मिलेगा।

आपको इस तरह की चीजों से बचने के लिए प्रीबिल्ड बाइनरी मिलनी चाहिए। उबंटू 12.04 पैक python 2.7.3, आपकी स्क्रिप्ट की आवश्यकता वाले संस्करण।

+5

फेडोरा पैकेज bzip2-devel (कम से कम Fedora 14 के रूप में) –

+0

धन्यवाद, अपडेट किया गया :) – jviotti

+1

मुझे CentOS6.4 पर एक काम कर रहे python2.7 बनाने के लिए यह सब इंस्टॉल करना पड़ा। yum install -y bzip2-devel zlib zlib-devel openssl openssl-devel – jamshid

3

आपको bz2 c लाइब्रेरी के विकास संस्करण को स्थापित करने की आवश्यकता है। आप संभवतः नहीं करते हैं और यही कारण है कि जब आपने अपनी उपयोगकर्ता प्रतिलिपि बनाई है तो यह इंस्टॉल नहीं किया गया था। उबंटू पर यह libbz2-dev पैकेज है। यह शायद फेडोरा पर समान या समान नाम दिया गया है। या आप इसे www.bzip.org से डाउनलोड कर सकते हैं।

3

CentOS 7 पर, स्थापित bzip2-devel:

sudo yum install bzip2-devel 

तब फिर से संकलन अजगर।

+0

CentOS 6 के साथ-साथ – trinth

2

आप स्रोत कोड द्वारा bzip2 पुनः स्थापित करना होगा:

  1. yum install bzip2-devel

  2. wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

  3. tar -zxvf bzip2-1.0.6.tar.gz

  4. cd bzip2-1.0.6

  5. make && make install

  6. कॉन्फ़िगर और फिर से अजगर संकलन

उन कभी कभी काम कर चरणों।

अंत में, मैं समस्या समझ है, यह /usr/local/Python-3.5.2/ lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu की जरूरत है। तो, जब मैं स्रोत कोड द्वारा bzip2 संकलित करता हूं तो इसमें कोई समस्या होनी चाहिए। समस्या को हल करने के लिए मैं इस फ़ाइल को किसी अन्य वीएम से कॉपी करता हूं।

+0

पर लागू होता है क्या आप कृपया python3 के लिए फ़ाइल साझा कर सकते हैं? धन्यवाद .. –

+0

आयात त्रुटि: गतिशील मॉड्यूल मॉड्यूल निर्यात फ़ंक्शन को परिभाषित नहीं करता है (PyInit_bz2) –

+0

'stackoverflow.com/प्रश्न/13915137/how-do-you-assign-bz2-to-an-altinstall-of-python' मुझे बचाओ –

8

यदि आप किसी विशिष्ट स्थान पर पाइथन स्थापित करते हैं, तो बस libbz2-dev इंस्टॉल नहीं करेगा।

centos के लिए एक समाधान नहीं है:

  • Centos 6

    sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7 
    
  • Centos 7

    sudo cp /usr/lib64/python2.7/lib-dynload/bz2.so /python_install_path/lib/python2.7 
    

python_install_path आमतौर पर /usr/local/lib/python2.7/ है, आप nee होगा डी प्रतिस्थापित करें कि यदि आपके पास कस्टम पायथन पथ है।

+0

यह समाधान मेरे लिए पूरी तरह से काम किया। मैं एक python स्क्रिप्ट के लिए bzip2 आयात करने में असमर्थ था जब तक कि मैंने इस bz2.so फ़ाइल को सिस्टम वर्चुअल से अपने वर्चुअलएएन फ़ोल्डर में कॉपी नहीं किया। – user2856414

+0

मैं इस समाधान का उपयोग तब तक कर रहा था जब तक कि मैंने अन्य टिप्पणी पढ़ी और पायथन 2.7.14 बनाने से पहले bzip2-devel इंस्टॉल किया। – trinth

+0

मैं पाइथन 3 में हूं, और त्रुटि प्राप्त करें: आयात त्रुटि: गतिशील मॉड्यूल मॉड्यूल निर्यात फ़ंक्शन (PyInit_bz2) को परिभाषित नहीं करता है –

1

मुझे इसे CentOS 6 पर भी जोड़ना चाहिए, सुनिश्चित करें कि आपके पास bzip2-devel है, bzip2-libs स्थापित नहीं है।

1

उपरोक्त समाधान python2.7 के साथ bz2 समस्याओं को हल कर सकते हैं। लेकिन पायथन 3.x हाँ, आपको _bz2.cpython-3xm-x86_64-linux-gnu.so की आवश्यकता है, हालांकि आपको इसे अपने स्वयं के env में बनाना चाहिए।

  1. यम स्थापित bzip2-devel:

    यहां मेरे समाधान है। (या apt-get)

  2. bzip2-1.0.6 डाउनलोड करें। स्थापित & & मेकअप करना()
  3. इस तरह python3 के _bz2.cpython निर्माण: python3 के स्रोत कोड फ़ोल्डर के अंतर्गत

vim run.sh: अजगर-3.xx

export CFLAGS="-I/usr/include" 
export LDFLAGS="-L/usr/lib64" 
export LD_LIBRARY_PATH=/usr/lib64 
make distclean 
./configure --prefix=/home/xxx/Python3 && make && make install 

आप उपसर्ग सेट कर सकते हैं आपके पूर्व संस्करण के समान, जो आपके द्वारा इंस्टॉल किए गए किसी भी पैकेज को अनइंस्टॉल नहीं करेगा। और इससे पहले, एक बैकअप फ़ोल्डर बनाओ।

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