2011-11-11 22 views
18

Ubuntu viene con Python 2.7.2+ preinstalado. (También descargué los paquetes dev de python). Debido a otro problema que tengo (Explicado en profundidad en How do I replace/update the version of the expat library used by Apache?), Graham Dumpleton me dijo que mi distribución había construido Python explícitamente de una manera para usar una implementación externa de pyexpat, por lo que causaba problema. También dijo que podía construir Python yo mismo desde el código fuente para resolver el problema. ¿Cómo haría esto en Ubuntu? (Tenga en cuenta que soy nuevo en Linux.)¿Cómo construiría Python yo mismo desde el código fuente en Ubuntu?

+0

Si no obtiene una respuesta aquí, esta pregunta puede ser vista por más gente de Ubuntu en askubuntu.com –

+1

Esto no es realmente específico de Ubuntu, así que creo que está bien aquí. Los diversos sitios de intercambio de pila tienen una superposición considerable en mi opinión. –

Respuesta

23
  1. En el intérprete de comandos (en un terminal), ejecute

    sudo apt-get install build-essential 
    

    Esto obtendrá todos los paquetes comunes que necesita para construir cualquier cosa (por ejemplo, el compilador, etc.).

  2. A continuación, ejecute

    sudo apt-get build-dep python2.7 
    

    Esto obtendrá todas las bibliotecas que necesita para construir pitón.

  3. A continuación, descargue el código fuente de python y descomprímalo en un directorio.

  4. ir allí y ejecutar

    ./configure --prefix=/path/where/you/want/python/installed 
    
  5. Entonces make y luego make install conseguirlo construido e instalado:

    make && make install 
    

Si llega a inconvenientes en el camino, pedir de nuevo aquí y trataré de ofrecer alguna orientación.

+1

Cuando ejecuté 'sudo apt-get build-dep python2.7' decía" E: Debes poner algunos URI 'de origen' en tu sources.list ". ¿Alguna idea? (Además, nota secundaria: creo que quisiste escribir 'sudo apt-get install build-essential' sin los -s al final de" essentials "en el primer comando.) –

+2

También necesitan la opción --enable-shared al construir Python, ya que quieren usarlo con mod_wsgi y Python no construye bibliotecas compartidas de forma predeterminada, lo que no es ideal para cargar dinámicamente sistemas integrados. –

+0

¿Qué son "ellos"? ¿A qué te refieres? Además, antes de eso, ¿cómo puedo resolver el mensaje de error? ¿Debo agregar algo a sources.list? –

2

La mejor solución para construir Python usted mismo es pythonbrew, que automatiza el proceso y también le permite no solo instalar varias versiones diferentes, sino también seleccionar fácilmente entre ellas.

En 2016, pyenv y PyRun son las soluciones más viables.

+2

+1 para la herramienta. ¿Qué tan maduro es? ¿Tienes experiencia personal? –

+0

@NoufalIbrahim: uso ['pythonz'] (https://github.com/saghul/pythonz) (una bifurcación simplificada de' pythonbrew'). Funciona como se anuncia: automatiza el proceso de descarga de las fuentes y su construcción a mano. – jfs

+2

Esta herramienta ya no se mantiene. –

4

Puede intentar usar pyenv. No lo he intentado todavía Pero mirando las fuentes, parece muy maduro realizar una instalación de cualquier intérprete CPython en cualquier sistema * ix.

6

La mejor manera de construir "caliente" pitón muy reciente (de github) es el siguiente:

sudo apt-get update \ 
    && apt-get install -y build-essential git libexpat1-dev libssl-dev zlib1g-dev \ 
    libncurses5-dev libbz2-dev liblzma-dev \ 
    libsqlite3-dev libffi-dev tcl-dev linux-headers-amd64 libgdbm-dev \ 
    libreadline-dev tk tk-dev 

    git clone https://github.com/python/cpython.git 
    cd cpython && ./configure --prefix=/usr \ 
    --enable-loadable-sqlite-extensions \ 
    --enable-shared \ 
    --with-lto \ 
    --enable-optimizations \ 
    --with-system-expat \ 
    --with-system-ffi \ 
    --enable-ipv6 --with-threads --with-pydebug --disable-rpath \ 
    && make \ 
    && make install 

Se construye el muy reciente pitón de las fuentes en GitHub.

Con esto he construido Python 3.7.0a0 (heads/master:60a6632a3d, Aug 5 2017).

Cuestiones relacionadas