पायथन को स्रोत से संकलित करने से पहले मुझे कौन से पैकेज / पुस्तकालय स्थापित करने चाहिए?


44

एक बार जब मुझे एक नया उबंटू स्थापित करने की आवश्यकता होती है (मैंने इसे डेस्कटॉप और सर्वर दोनों के लिए उपयोग किया है) और मैं हमेशा कुछ ऐसे पुस्तकालयों को भूल जाता हूं जिन्हें मुझे संकलित करने से पहले स्थापित करना चाहिए था, जिसका अर्थ है कि मुझे पुनर्मिलन करना होगा, और यह कष्टप्रद हो रहा है।

इसलिए अब मैं पायथन को संकलित करने से पहले स्थापित करने के लिए सभी लाइब्रेरी पैकेजों की एक पूरी सूची बनाना चाहता हूं (और अधिमानतः वे कितने वैकल्पिक हैं)।

यह वह सूची है जिसे मैंने नीचे की मदद से और खोदकर संकलित किया है setup.py। यह Ubuntu 10.04 और 11.04 के लिए कम से कम पूरा हो गया है:

build-essential (obviously)
libz-dev        (also pretty common and essential)
libreadline-dev (or the Python prompt is crap)
libncursesw5-dev
libssl-dev
libgdbm-dev
libsqlite3-dev
libbz2-dev

पायथन 3.2 के लिए और बाद में:

liblzma-dev

अधिक वैकल्पिक:

tk-dev
libdb-dev

उबंटू के बर्कले डेटाबेस के v1.8.5 के लिए कोई पैकेज नहीं है, न ही (स्पष्ट कारणों के लिए) सन ऑडियो हार्डवेयर, इसलिए bsddb185और sunaudiodevमॉड्यूल अभी भी उबंटू पर नहीं बनाए जाएंगे, लेकिन अन्य सभी मॉड्यूल स्थापित उपरोक्त पैकेज के साथ बनाए गए हैं।

अपडेट करें

उबंटू 14.04 में पायथन 2.6 के लिए और भी अधिक पैच की आवश्यकता है, और 2.7 आदि। मैं इसके बजाय चेकआउट पाइनेव की सिफारिश करूंगा । इसमें एक स्क्रिप्ट python-build(स्थित plugins/python-build/bin) होती है। इसके साथ आप इस तरह के मनमाने पायथन संस्करण स्थापित कर सकते हैं:

$ ./python-build 2.7.8 /opt/python27

जहां 2.7.8 संस्करण है और / ऑप्ट / python27 वह पथ है जिसे इसे स्थापित किया जाएगा। पायनेव पायथन संस्करण को डाउनलोड करेगा, आवश्यक पैच लागू करेगा और configure; make; make installआपके लिए।

अंत अद्यतन

पायथन 2.5 और पायथन 2.6 को भी उबंटू 11.04 पर और बाद में नए मल्टी-आर्क लेआउट को संभालने के लिए LDFLAGS सेट करना होगा:

export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"

पायथन 2.6, 2.7 और 3.0 के लिए आपको ./configureस्क्रिप्ट चलाने से पहले और दौड़ने से पहले SSL को स्पष्ट रूप से सक्षम करना होगा make। में Modules/Setupवहाँ इस तरह पंक्तियां हैं:

#SSL=/usr/local/ssl
#_ssl _ssl.c \
#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#       -L$(SSL)/lib -lssl -lcrypto

इन लाइनों को हटाएं और SSL चर को इसमें बदलें /usr:

SSL=/usr
_ssl _ssl.c \
       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
       -L$(SSL)/lib -lssl -lcrypto

पायथन 2.6 और 3.0 को भी ओपनएसएसएल 1.0 के साथ उपयोग किए जाने के लिए संशोधित मॉड्यूल / _ssl.c की आवश्यकता होती है, जिसका उपयोग Ubuntu 11.10 में किया जाता है। लगभग 300 लाइन पर आपको यह मिल जाएगा:

    else if (proto_version == PY_SSL_VERSION_SSL3)
        self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
    else if (proto_version == PY_SSL_VERSION_SSL2)
        self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
    else if (proto_version == PY_SSL_VERSION_SSL23)
        self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */

उस में बदलें:

    else if (proto_version == PY_SSL_VERSION_SSL3)
        self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
#ifndef OPENSSL_NO_SSL2
    else if (proto_version == PY_SSL_VERSION_SSL2)
        self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
#endif
    else if (proto_version == PY_SSL_VERSION_SSL23)
        self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */

यह SSL_v2 समर्थन को अक्षम करता है, जो जाहिरा तौर पर OpenSSL1.0 में चला गया है।

अजगर 2.4 (हाँ, मेरे पास अभी भी कुछ पुरानी परियोजनाएं हैं जिनकी 2.4 की आवश्यकता है) को सेटअप पैच के लिए इस पैच की आवश्यकता है:

--- setup.py    2006-10-08 19:41:25.000000000 +0200
+++ setup.py        2012-05-08 14:02:14.325174357 +0200
@@ -269,6 +269,7 @@
         lib_dirs = self.compiler.library_dirs + [
             '/lib64', '/usr/lib64',
             '/lib', '/usr/lib',
+           '/usr/lib/x86_64-linux-gnu'
             ]
         inc_dirs = self.compiler.include_dirs + ['/usr/include']
         exts = []
@@ -496,7 +497,8 @@
                 ssl_incs += krb5_h
         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
                                      ['/usr/local/ssl/lib',
-                                      '/usr/contrib/ssl/lib/'
+                                      '/usr/contrib/ssl/lib/',
+                                     'x86_64-linux-gnu'
                                      ] )

         if (ssl_incs is not None and

और इसके साथ संकलित करने की आवश्यकता है:

env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu"  ./configure --prefix=/opt/python2.4

जवाबों:


22

कुछ और भी हैं। आम तौर पर, कॉन्फ़िगर आपको याद दिलाना चाहिए अगर कुछ भी याद आ रही है, और उनमें से कुछ कर रहे हैं वैकल्पिक। यहाँ मेरी सूची है:

build-essential
libncursesw5-dev
libreadline-gplv2-dev
libssl-dev
libgdbm-dev
libc6-dev
libsqlite3-dev
libbz2-dev
libffi-dev

1
धन्यवाद, अद्यतन। कॉन्फ़िगर आपको याद दिलाता है, लेकिन यह बस द्वारा झपट्टा मारता है, और कभी-कभी यह स्पष्ट नहीं होता है कि किस पैकेज को स्थापित करना है।
लेनार्ट रेगेब्रॉन

वास्तव में जवाब देने वाले के रूप में स्वीकार किया गया। :) मैं अगली बार जब मुझे उबंटू स्थापित करने की आवश्यकता होती है, तो इस प्रश्न को जोड़ने के लिए याद रखने की कोशिश करूँगा। :)
लेन्नर्ट रेगेब्रो

1
Ubuntu 12.04 के लिए, आप बदलना चाहते हैं जाएगा libreadline5-devकरने के लिएlibreadline-dev
Ehtesh चौधरी

3
हाल ही में, libbz2-dev और liblzma-dev को भी जोड़ा जाना चाहिए।
अपाला

2
16.10 की जगह है libreadline5-devके साथlibreadline-gplv2-dev
jmunsch

15

आप उपयुक्त-build-dep विकल्प में विकल्प के साथ पायथन के लिए सभी बिल्ड निर्भरता स्थापित करने में सक्षम होना चाहिए

sudo apt-get build-dep python

    build-dep
       build-dep causes apt-get to install/remove packages in an attempt
       to satisfy the build dependencies for a source package.

1
यह तो दिलचस्प है। लेकिन यह उन चीजों के भार को स्थापित करता है जिनकी स्पष्ट रूप से सख्त जरूरत नहीं होती है (libsgmls-perl !?), जबकि यह ना तो libz-dev स्थापित करता है और ना ही libreadline-dev (ऊपर देखें)।
लेन्नर्ट रेग्रोब

यह बहुत उपयोगी है जब आप apt-get source python
Stefano Palazzo

1
मेरे लिए, यह ओपनसिएल को भी छोड़ देता है, जिसका अर्थ है कि जब मैं अजगर का निर्माण करता हूं, तो मैं सेटप्टूल स्थापित नहीं कर सकता क्योंकि इसका इंस्टॉलर https पर डाउनलोड होता है।
जोनाथन हार्टले

यह वही है जो आधिकारिक डॉक्स भी सुझाते हैं: docs.python.org/devguide/setup.html
hwjp

1
अधिक सटीकता के लिए आप कमांड का उपयोग कर सकते हैं sudo apt-get build-dep python3.x(3 और एक्स को अपने पसंदीदा संस्करण के साथ आवश्यकतानुसार - हालांकि कभी-कभी मेरे मामले में 3.6 के रूप में अभी तक उपलब्ध नहीं था इसलिए मैंने 3.5 का उपयोग किया)
JxAxMxIxN

2

यदि आप Google App Engine SDK का उपयोग करना चाहते हैं:

  • opensll
  • libssl-dev बिल्ड-एसेंशियल

libsqlite3-dev zlib1g zlib1g-dev

पीआईएल 1.1.7

:)


अजगर को संकलित करने के लिए आपको पीआईएल की आवश्यकता नहीं है। :)
लेनार्ट रेगेब्रॉन

1

कुछ प्रकार के परीक्षणों को चलाने के लिए आपको आवश्यकता होगी python-profiler

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.