Python'u kaynaktan derlemeden önce yüklemem gereken paketler / kütüphaneler nelerdir?


44

Arada bir yeni bir Ubuntu kurmam gerekiyor (hem masaüstü hem de sunucular için kullandım) ve derlemeden önce kurmam gereken bir kaç kütüphaneyi unutuyorum, yani yeniden derlemem gerekiyor ve can sıkıcı oluyor.

Şimdi Python'u derlemeden önce kurulacak kütüphane paketlerinin tam bir listesini yapmak istiyorum (ve tercihen ne kadar isteğe bağlı olduklarını).

Bu, aşağıdaki yardım ile derlediğim ve topladığım liste setup.py. En azından Ubuntu 10.04 ve 11.04 için tamamlanmıştır:

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

Python 3.2 ve sonrası için:

liblzma-dev

Daha fazla isteğe bağlı:

tk-dev
libdb-dev

Ubuntu’nun Berkeley veri tabanının v1.8.5’i için paketleri yoktur (açık nedenlerden ötürü) Sun ses donanımı da vardır, bu nedenle bsddb185ve sunaudiodevmodüller hala Ubuntu’da kurulmayacaktır, fakat diğer tüm modüller yukarıdaki paketlerle kuruludur.

GÜNCELLEME

Ubuntu 14.04'te Python 2.6 ve 2.7 vb. İçin daha da fazla yama gerekli. Bunun yerine pyenv'i kontrol etmenizi öneririm . İçinde bir komut dosyası python-buildbulunur plugins/python-build/bin. Bununla beraber keyfi Python sürümlerini yükleyebilirsiniz:

$ ./python-build 2.7.8 /opt/python27

2.7.8 sürümünde ve / opt / python27 ise kurulacak yoldur. Pyenv, Python sürümünü indirecek, gerekli yamaları uygulayacak ve configure; make; make installsizin için.

SON GÜNCELLEME

Python 2.5 ve Python 2.6'nın, yeni çoklu kemer düzenini işlemek için Ubuntu 11.04 ve sonrasında ayarlanmış LDFLAGS'a sahip olmaları gerekir:

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

Python 2.6, 2.7 ve 3.0 için ayrıca ./configurebetiği çalıştırdıktan sonra ve çalıştırmadan önce SSL'yi açıkça etkinleştirmeniz gerekir make. İçinde Modules/Setupböyle çizgiler var:

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

Bu satırların komutunu kaldırın ve SSL değişkenini şu şekilde değiştirin /usr:

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

Python 2.6 ve 3.0 ayrıca, Ubuntu 11.10'da kullanılan OpenSSL 1.0 ile kullanılmak üzere değiştirilmiş Modül / _ssl.c'ye ihtiyaç duyar. Satır 300 civarında bunu bulacaksınız:

    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 */

Şunu değiştir:

    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 */

Bu, görünüşe göre OpenSSL1.0'da görünen SSL_v2 desteğini devre dışı bırakır.

Python 2.4 (evet, hala 2.4 olan bazı eski projelerim var) setup.py için bu yamaya ihtiyaç duyuyor:

--- 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

Ve bununla derlenmesi gerekiyor:

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

Yanıtlar:


22

Birkaç tane daha var. Normalde herhangi bir eksiklik olup olmadığını yapılandırmak hatırlatmak gerektiğini ve birkaç tanesi olan isteğe bağlı. İşte listem:

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

1
Teşekkürler güncellendi. Yapılandırma size hatırlatıyor, ancak yalnızca tarafından yutuyor ve bazen hangi paketin yükleneceği belli değil.
Lennart Regebro

Aslında cevap veren tek kişi olarak kabul edildi. :) Bir dahaki sefere bir Ubuntu kurmam gerektiğinde bu soruya eklemeyi hatırlamaya çalışacağım. :)
Lennart Regebro

1
Ubuntu 12.04 için, değiştirmek istediğiniz edeceğiz libreadline5-devetmeklibreadline-dev
Ehtesh Choudhury

3
Daha yakın zamanda, libbz2-dev ve liblzma-dev de eklenmelidir.
Apalala

2
16.10 libreadline5-devile değiştirildilibreadline-gplv2-dev
jmunsch

15

Python için tüm derleme bağımlılıklarını apt-getbuild-dep seçeneğiyle kurabilmelisiniz

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
İlginç. Ancak açıkça gerekmeyen şeyleri yükler (libsgmls-perl !?), ne libz-dev ne de libreadline-dev'i yüklemez (yukarıya bakın).
Lennart Regebro

Bu, siz ne zaman olsa çok faydalıdır apt-get source python.
Stefano Palazzo

1
Benim için bu aynı zamanda openssl'yi de yok sayıyor, bu da python'u oluşturduktan sonra setuptools yükleyemediğimden çünkü kurulum programı https üzerinden indiriliyor.
Jonathan Hartley

resmi belgelerin de tavsiye ettiği şey budur: docs.python.org/devguide/setup.html
hwjp

1
Daha fazla hassasiyet için, komutu kullanabilirsiniz sudo apt-get build-dep python3.x(gerektiğinde 3 ve x yerine, tercih ettiğiniz sürümle değiştirin - bazen benim durumumda 3.6 henüz mevcut değildi, bu yüzden 3.5 yerine kullandım)
JxAxMxIxN

2

Google App Engine SDK'sını kullanmak istiyorsanız:

  • opensll
  • libssl-dev yapı temel

libsqlite3-dev zlib1g zlib1g-dev

PIL 1.1.7

:)


Python'u derlemek için PIL'e ihtiyacınız yok. :)
Lennart Regebro

1

Belirli test türlerini çalıştırmak için ihtiyacınız olacak python-profiler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.