소스에서 파이썬을 컴파일하기 전에 설치해야 할 패키지 / 라이브러리는 무엇입니까?


44

가끔 새 Ubuntu를 설치해야합니다 (데스크톱과 서버 모두에 사용했습니다). 컴파일하기 전에 설치해야하는 라이브러리 몇 개를 항상 잊어 버렸습니다. 다시 컴파일해야하므로 성 가실 것입니다.

이제 파이썬을 컴파일하기 전에 설치할 모든 라이브러리 패키지의 전체 목록을 만들고 싶습니다.

이것은 아래 도움말과에서 파헤쳐 서 작성한 목록입니다 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

Python 3.2 이상의 경우 :

liblzma-dev

더 옵션 :

tk-dev
libdb-dev

Ubuntu에는 Berkeley 데이터베이스 v1.8.5 용 패키지가 없으며 Sun 오디오 하드웨어 (명백한 이유로) bsddb185sunaudiodev모듈은 여전히 ​​Ubuntu에서 빌드되지 않지만 다른 모든 모듈은 위 패키지가 설치된 상태로 빌드됩니다.

최신 정보

Ubuntu 14.04에는 Python 2.6 및 2.7 등에 더 많은 패치가 필요합니다 . 대신 pyenv 를 확인하는 것이 좋습니다 . 스크립트가 포함되어 있습니다 python-build(에 있음 plugins/python-build/bin). 그것으로 당신은 다음과 같이 임의의 파이썬 버전을 설치할 수 있습니다 :

$ ./python-build 2.7.8 /opt/python27

여기서 2.7.8은 버전이고 / opt / python27은 설치 될 경로입니다. Pyenv는 Python 버전을 다운로드하고 필요한 패치를 적용합니다 configure; make; make install.

업데이트 종료

파이썬 2.5와 파이썬 2.6은 또한 새로운 멀티 아키텍처 레이아웃을 처리하기 위해 Ubuntu 11.04 이상에서 LDFLAGS를 설정해야합니다.

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

Python 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

Python 2.6 및 3.0은 Ubuntu 11.10에서 사용되는 OpenSSL 1.0과 함께 사용되도록 Modules / _ssl.c를 수정해야합니다. 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 */

이것은 OpenSSL1.0에서 사라진 SSL_v2 지원을 비활성화합니다.

Python 2.4 (예, 여전히 2.4가 필요한 오래된 프로젝트가 있음)에는 setup.py 에이 패치가 필요합니다.

--- 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
감사합니다. 구성은 당신을 생각 나게하지만, 그냥 혼란 스러울 수 있으며 때로는 어떤 패키지를 설치할지 명확하지 않습니다.
Lennart Regebro

실제로 응답하는 유일한 사람으로 승인되었습니다. :) 다음에 Ubuntu를 설치해야 할 때이 질문에 추가하는 것을 기억하려고합니다. :)
Lennart Regebro

1
Ubuntu 12.04의 경우 다음과 같이 변경 libreadline5-dev하려고합니다.libreadline-dev
Ehtesh Choudhury

3
최근에는 libbz2-dev 및 liblzma-dev도 추가해야합니다.
Apalala

2
16.10를 대체하고 libreadline5-dev함께libreadline-gplv2-dev
jmunsch

15

apt-getbuild-dep옵션을 사용하여 Python에 대한 모든 빌드 종속성을 설치할 수 있어야합니다.

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
그 흥미 롭군요. 그러나 libz-dev 나 libreadline-dev (위 참조)를 설치하지는 않지만 명확하게 필요하지 않은 많은 것들 (libsgmls-perl !?)을 설치합니다.
Lennart Regebro

이것은 당신이 때 매우 유용합니다 apt-get source python.
Stefano Palazzo

1
나에게 이것은 openssl을 생략합니다. 즉, 파이썬을 빌드 한 후에는 설치 프로그램이 https를 통해 다운로드되므로 setuptools를 설치할 수 없습니다.
Jonathan Hartley

이것은 공식 문서도 권장하는 것입니다. docs.python.org/devguide/setup.html
hwjp

1
정확성을 sudo apt-get build-dep python3.x
높이기 위해이

2

Google App Engine SDK를 사용하려는 경우 :

  • opensll
  • libssl-dev 빌드 필수

libsqlite3-dev zlib1g zlib1g-dev

PIL 1.1.7

:)


Python을 컴파일하기 위해 PIL이 필요하지 않습니다. :)
Lennart Regebro

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.