উত্স থেকে পাইথন সংকলনের আগে আমার প্যাকেজগুলি / লাইব্রেরিগুলি কী ইনস্টল করা উচিত?


44

একবারে আমাকে একটি নতুন উবুন্টু ইনস্টল করতে হবে (আমি এটি ডেস্কটপ এবং সার্ভার উভয় ক্ষেত্রেই ব্যবহার করেছি) এবং আমি সবসময় সংকলনের আগে ইনস্টল করা উচিত ছিল এমন কয়েকটি গ্রন্থাগার ভুলে গিয়েছিলাম, যার অর্থ আমাকে পুনরায় সংকলন করতে হবে, এবং এটি বিরক্তিকর হয়ে উঠছে।

সুতরাং এখন পাইথন সংকলনের আগে ইনস্টল করার জন্য সমস্ত গ্রন্থাগার প্যাকেজগুলির একটি সম্পূর্ণ তালিকা তৈরি করতে চাই (এবং তারা পছন্দমতো কীভাবে বিকল্প হয়))

এই তালিকাটি আমি নীচে সহায়তা দিয়ে এবং খনন করে সংকলিত setup.py। এটি কমপক্ষে উবুন্টু 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

পাইথন ৩.২ এবং তার পরে:

liblzma-dev

আরও alচ্ছিক:

tk-dev
libdb-dev

বার্কলে ডাটাবেসের v1.8.5 এর জন্য উবুন্টুর কোনও প্যাকেজ নেই, না (সুস্পষ্ট কারণে) সুন অডিও হার্ডওয়্যার, সুতরাং উবুন্টুতে bsddb185এবং sunaudiodevমডিউলগুলি এখনও নির্মিত হবে না, তবে অন্যান্য সমস্ত মডিউলগুলি উপরের প্যাকেজগুলি ইনস্টল করে তৈরি করা হয়েছে।

হালনাগাদ

উবুন্টু 14.04 আরও বেশি পাইথন 2.6 জন্য প্রয়োজনীয় প্যাচ মধ্যে আছে, এবং 2.7 ইত্যাদি পরিবর্তে আমি চেকআউট সুপারিশ করবে pyenv । এটিতে একটি স্ক্রিপ্ট রয়েছে python-build(এতে অবস্থিত plugins/python-build/bin)। এটির সাহায্যে আপনি এটির মতো নির্বিচারে পাইথন সংস্করণ ইনস্টল করতে পারেন:

$ ./python-build 2.7.8 /opt/python27

যেখানে ২.7.৮ হ'ল সংস্করণ এবং / অপ্ট / পাইথন 27 এটি ইনস্টল হওয়ার পথে। পাইএনভ পাইথন সংস্করণ ডাউনলোড করবে, প্রয়োজনীয় প্যাচগুলি প্রয়োগ করবে এবং আপনার configure; make; make installজন্য।

সমাপ্তি আপডেট

পাইথন 2.5 এবং পাইথন 2.6 এরও নতুন মাল্টি-আর্চ লেআউটটি হ্যান্ডেল করতে উবুন্টু ১১.০৪ এবং তারপরে এলডিএফএলএফএস স্থাপন করা দরকার:

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

পাইথন 2.6, 2.7 এবং 3.0 এর জন্য আপনাকে ./configureস্ক্রিপ্টটি চালানোর পরে এবং চালনার আগে স্পষ্টভাবে এসএসএল সক্ষম করতে হবে make। ইন Modules/Setupএই মত লাইন হল:

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

এই লাইনগুলিকে কমেন্ট করুন এবং এসএসএল ভেরিয়েবলকে এতে পরিবর্তন করুন /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 ব্যবহার করার জন্য মডিউল / _ এসএসএল.সি. সংশোধিত প্রয়োজন যা উবুন্টু ১১.১০ তে ব্যবহৃত হয়। 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 এ গেছে।

পাইথন ২.৪ (হ্যাঁ, আমার এখনও কিছু পুরানো প্রকল্প রয়েছে যার ২.৪ প্রয়োজন) সেটআপ.পিতে এই প্যাচটি দরকার:

--- 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
উবুন্টু 12.04-র জন্য, আপনি পরিবর্তন libreadline5-devকরতে চানlibreadline-dev
এহতেশ চৌধুরী

3
অতি সম্প্রতি, libbz2-dev এবং liblzma-dev এছাড়াও যুক্ত করা উচিত।
আপালালা

2
16.10 এর সাথে প্রতিস্থাপন libreadline5-devকরেছেlibreadline-gplv2-dev
13

15

আপনার সাথে পাইথন জন্য সব বিল্ড dependancies ইনস্টল করতে সক্ষম হওয়া উচিত 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 !?), যদিও এটি লিবজ-ডেভ বা লিবারডলাইন-দেব (উপরে দেখুন) ইনস্টল করে না।
লেনার্ট রেগেব্রো

এটি যখন আপনি দরকারী তখন খুব দরকারী apt-get source python
স্টেফানো প্যালাজো

1
আমার জন্য এটি ওপেনসেলকেও বাদ দেয়, যার অর্থ আমি পাইথন তৈরির পরে, আমি সেটআপলগুলি ইনস্টল করতে পারি না কারণ এর ইনস্টলারটি https- র মাধ্যমে ডাউনলোড হয়।
জোনাথন হার্টলি

অফিসিয়াল ডক্সও এটিকে
সেটআপ

1
বৃহত্তর নির্ভুলতার জন্য আপনি কমান্ডটি ব্যবহার করতে পারেন sudo apt-get build-dep python3.x(প্রয়োজনীয় হিসাবে আপনার পছন্দসই সংস্করণটি 3 এবং এক্স প্রতিস্থাপন করুন - যদিও কখনও কখনও আমার ক্ষেত্রে 3.6 এখনও পাওয়া যায় নি তাই পরিবর্তে আমি 3.5 ব্যবহার করেছি)
JxAxMxIxN

2

আপনি যদি গুগল অ্যাপ ইঞ্জিন এসডিকে ব্যবহার করতে চান:

  • opensll
  • libssl-dev বিল্ড-অপরিহার্য

libsqlite3-dev zlib1g zlib1g-dev

পিআইএল 1.1.7

:)


পাইথন সংকলনের জন্য আপনার পিআইএল দরকার নেই। :)
লেনার্ট রেগেব্রো

1

নির্দিষ্ট ধরণের পরীক্ষা চালানোর জন্য আপনার প্রয়োজন হবে python-profiler

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.