2010-07-01 30 views
14

Recientemente comencé a aprender Python, y estoy un poco confundido acerca de cómo se distribuyen e instalan los paquetes.Instalación de paquetes Python en Windows

entiendo que la forma oficial de la instalación de paquetes es distutils: descargue el archivo fuente, descomprimirlo y ejecutar: python setup.py install, entonces el módulo automágicamente instalarse

también sé sobre setuptools que viene con el script de ayuda easy_install. Utiliza huevos para su distribución, y por lo que entiendo, se construye en la parte superior de distutils y hace lo mismo que el anterior, además de que se encarga de todas las dependencias necesarias, todos tomaron de PyPi

Luego está también pip, que todavía no estoy seguro de cómo se diferencia de los demás.

Por último, como estoy en una máquina Windows, una gran cantidad de paquetes también ofrece binaria construye a través de un instalador ventanas, especialmente los que requiere la compilación de C/Fortran, que de otro modo sería una pesadilla para compilar manualmente en Windows (supone que tiene MSVC o MinGW/Cygwin entorno de desarrollo con todas las bibliotecas necesarias configuración ... no obstante, trate de construir numpy o scipy usted mismo y lo entenderá!)

Entonces, ¿alguien puede ayudarme a dar sentido a todo esto, y explicar las diferencias, pros/contras de cada método. Me gustaría saber cómo cada uno realiza un seguimiento de los paquetes (Registro de Windows, archivos de configuración, ...). En particular, ¿cómo gestionaría todas sus bibliotecas de terceros (podría listar paquetes instalados, deshabilitar/desinstalar, etc.)

+0

Relacionado: [Listado instalado python site-packages?] (Http://stackoverflow.com/questions/2300794/), [¿Puedo instalar paquetes de Windows Python en virtualenvs?] (Http://stackoverflow.com/questions/3271590 /). Este último menciona * virtualenv * pero también es válido fuera de * virtualenv *. –

+0

Esto debería ser de interés para cualquiera que aterrice en esta página: http://stackoverflow.com/a/14753678/97160 – Amro

Respuesta

11

Uso pip, y no en Windows, por lo que no puedo proporcionar una comparación con la opción del instalador de Windows, solo información sobre pip:

  • Pip se basa en las herramientas de configuración y requiere su instalación.
  • Pip es un reemplazo (mejora) para setuptools 'easy_install. Hace todo lo que hace easy_install, y mucho más (asegúrese de que todas las distribuciones deseadas puedan descargarse antes de instalarlas para evitar instalaciones interrumpidas, enumerar distribuciones y versiones instaladas, desinstalar, buscar PyPI, instalar desde un archivo de requisitos que enumera múltiples distribuciones y versiones ...).
  • Pip actualmente no es compatible con la instalación de cualquier forma de distribuciones precompiladas o binarias, por lo que cualquier distribución con extensiones que requieran compilación solo se puede instalar si tiene el compilador adecuado disponible. La instalación compatible con instaladores binarios de Windows se encuentra en la hoja de ruta, pero no está claro cuándo sucederá.
  • Hasta hace poco, el soporte de Windows de pip era escamoso y no probado. Gracias a mucho trabajo de Dave Abrahams, pip trunk ahora pasa todas sus pruebas en Windows (y hay un servidor de integración continua que nos ayuda a garantizar que siga siendo así), pero aún no se ha publicado, incluido ese trabajo. Por lo tanto, la próxima versión debería contar con un soporte de Windows más confiable.
  • Todos los mecanismos de instalación de paquetes de Python estándar almacenan todos los metadatos sobre las distribuciones instaladas en un archivo o archivos al lado de los paquetes instalados. Distutils usa un archivo distribution_name-X.X-pyX.X.egg-info, pip usa un directorio con nombres similares con múltiples archivos de metadatos. Easy_install coloca todo el código Python instalado para una distribución dentro de su propio archivo zip o directorio, y coloca un directorio EGG-INFO dentro de ese directorio con metadatos. Si importa un paquete de Python desde la solicitud interactiva, verifique el valor del paquete.__archivo__; debería encontrar cerca los metadatos para la distribución de ese paquete.
  • La información sobre las distribuciones instaladas solo se almacena en cualquier tipo de registro global mediante herramientas de empaquetado específicas del sistema operativo, como instaladores de Windows, Apt o RPM. Las herramientas estándar de empaquetado de Python no modifican ni prestan atención a estas listas.
  • Pip (o, en mi opinión, cualquier herramienta de empaquetado de Python) se usa mejor con virtualenv, que le permite crear miniproyectos aislados de Python por proyecto en los que puede instalar paquetes sin afectar a su sistema en general. Cada nuevo virtualenv viene automáticamente con pip instalado en él.

Un par de otros proyectos es posible que desee tener en cuenta, así (sí, hay más!):

  • distribute es un tenedor de setuptools que tiene algunas correcciones de errores y características adicionales.
  • distutils2 está destinado a ser la "próxima generación" de envases de Python. Está (con suerte) adoptando las mejores características de distutils/setuptools/distribute/pip. Se está desarrollando de forma independiente y aún no está listo para su uso, pero con el tiempo debería reemplazar distutils en la biblioteca estándar de Python y convertirse en la solución de empaque de hecho de Python.

¡Espero que todo eso ayude a aclarar algo! Buena suerte.

+0

gracias por la descripción, que fue útil. Una observación, mirando el directorio 'site-packages', además de lo esperado, también hay un par de archivos' .pth' que supongo que son metadata easy_install. – Amro

+1

@Amro: sí, porque easy_install coloca el código Python de cada distribución en un archivo comprimido o directorio separado, tiene que hacer hacksy de sys.path para que todos sean importables. setuptools.pth y easy-install.pth hacen ese hackeo. –

+0

Veo, supongo que esto es necesario, tenemos que tener varias versiones del mismo módulo sin conflicto ... Gracias de nuevo – Amro

0

Uso windows y python. Es algo frustrante, porque pip no siempre funciona para instalar cosas. Python se está moviendo a pip, así que todavía lo uso. Pip es agradable, porque se puede desinstalar artículos y utilizar

pip freeze > requirements.txt 
pip install -r requirements.txt 

Otra de las razones que me gusta pip es para entornos virtuales como Venv con Python 3.4. He encontrado que es mucho más fácil de usar en Windows que virtualenv.

Si no puede instalar un paquete, debe encontrar el binario. http://www.lfd.uci.edu/~gohlke/pythonlibs/

He encontrado que estos binarios son muy útiles.

Pip está tratando de hacer algo llamado rueda para instalaciones binarias.

pip install wheel 
wheel convert path\to\binary.exe 
pip install converted_wheel.whl 

También deberá hacer esto para las bibliotecas que no se instalen y sean necesarias para ese paquete.

Cuestiones relacionadas