xticks barplot python module

barplot - ¿Python tiene un sistema de gestión de paquete/módulo?



pandas plot (11)

¿Python tiene un sistema de administración de paquetes / módulos, similar a como Ruby tiene rubygems donde puedes hacer gem install packagename ?

Al instalar Python Modules , solo veo referencias a python setup.py install , pero eso requiere que primero encuentres el paquete.


Progreso reciente

Marzo de 2014 : ¡Buenas noticias! Python 3.4 se envía con Pip. Pip ha sido durante mucho tiempo el administrador de paquetes estándar de hecho de Python. Puede instalar un paquete como este:

pip install httpie

Wahey! Esta es la mejor característica de cualquier versión de Python. Hace que la riqueza de bibliotecas de la comunidad sea accesible para todos. Los principiantes ya no están excluidos del uso de bibliotecas comunitarias por la dificultad prohibitiva de la configuración.

Sin embargo , sigue habiendo una serie de frustraciones sobresalientes con la experiencia de empaque de Python. Cumulativamente, hacen que Python sea poco acogedor para los novatos. Además, la larga historia de abandono (es decir, no envío con un administrador de paquetes durante 14 años desde Python 2.0 a Python 3.3) dañó a la comunidad. Describo ambos a continuación.

Frustraciones sobresalientes

Es importante comprender que, si bien los usuarios experimentados pueden evitar estas frustraciones, son barreras importantes para las personas nuevas en Python. De hecho, es probable que la dificultad y la hostilidad general del usuario disuadan a muchos de ellos.

El sitio web PyPI es útil en el contador

Todos los idiomas con un administrador de paquetes tienen un repositorio oficial (o cuasi oficial) para que la comunidad descargue y publique paquetes. Python tiene el Python Package Index, PyPI. https://pypi.python.org/pypi

Comparemos sus páginas con las de RubyGems y Npm (el administrador del paquete Node).

  1. https://rubygems.org/gems/rails Página de RubyGems para los rails paquete
  2. https://www.npmjs.org/package/express Página de Npm para el paquete express
  3. https://pypi.python.org/pypi/simplejson/ Página de PyPI para el paquete simplejson

Verá que las páginas de RubyGems y Npm comienzan con una descripción de una línea del paquete y luego con instrucciones amistosas acerca de cómo instalarlo.

Mientras tanto, ay de cualquier desventurado usuario de Python que navegue ingenuamente hacia PyPI. En https://pypi.python.org/pypi/simplejson/ , no encontrarán tales instrucciones útiles. Sin embargo, hay un gran enlace verde ''Descargar''. No es irrazonable seguirlo. Ajá, ¡hacen clic! Su navegador descarga un archivo .tar.gz . Muchos usuarios de Windows ni siquiera pueden abrirlo, pero si setup.py pueden eventualmente extraerlo, luego ejecute setup.py y eventualmente con la ayuda de Google setup.py install . Algunos se darán por vencidos y reinventarán la rueda ...

Por supuesto, todo esto está mal. La forma más fácil de instalar un paquete es con un comando Pip. Pero PyPI ni siquiera mencionó a Pip. En cambio, los llevó por un camino arcaico y tedioso.

Error: no se puede encontrar vcvarsall.bat

Numpy es una de las bibliotecas más populares de Python. Intenta instalarlo con Pip, obtienes este mensaje de error críptico:

Error: no se puede encontrar vcvarsall.bat

Intentar solucionarlo es una de las preguntas más populares sobre : " error: no se puede encontrar vcvarsall.bat "

Pocas personas tienen éxito.

Para comparar, en la misma situación, Ruby imprime este mensaje, que explica qué está pasando y cómo solucionarlo:

Actualice su RUTA para incluir herramientas de compilación o descargue DevKit de http://rubyinstaller.org/downloads y siga las instrucciones en http://github.com/oneclick/rubyinstaller/wiki/Development-Kit

Publicar paquetes es difícil

Ruby y Nodejs se envían con gerentes de paquetes con todas las funciones, Gem (desde 2007) y Npm (desde 2011), y han nutrido comunidades de intercambio centradas en GitHub. Npm hace que publicar paquetes sea tan fácil como instalarlos, ya tiene paquetes de 64k . RubyGems enumera 72k paquetes . El venerable índice de paquete de Python https://pypi.python.org/pypi muestra https://pypi.python.org/pypi .

Historia

Volando frente a su lema de " baterías incluidas ", Python se envió sin un administrador de paquetes hasta 2014.

Hasta Pip, el estándar de facto era un comando easy_install . Fue lamentablemente inadecuado. No hubo ningún comando para desinstalar paquetes.

Pip fue una mejora masiva. Tenía la mayoría de las características de Ruby''s Gem. Desafortunadamente, Pip fue, hasta hace poco, irónicamente difícil de instalar. De hecho, el problema sigue siendo una de las principales preguntas de Python sobre : " ¿Cómo instalo pip en Windows? "


A partir de finales de 2014, se debe considerar la distribución Anaconda Python de Continuum Analytics con el conda paquetes conda . Resuelve la mayoría de los problemas serios que enfrentan las personas con Python en general (administrando diferentes versiones de Python, actualizando versiones de Python, administración de paquetes, entornos virtuales, compatibilidad de Windows / Mac) en una descarga cohesiva.

Le permite hacer casi todo lo que pueda desear con Python sin tener que cambiar el sistema en absoluto. Mi próxima solución preferida es pip + virtualenv, pero o bien tiene que instalar virtualenv en su sistema Python (y su sistema Python puede no ser la versión que desea), o compilar desde el origen . Anaconda hace de todo este proceso el clic de un botón, además de agregar muchas otras características.


Como desarrollador de Ruby y Perl y aprendiendo de Python, no he encontrado que easy_install o pip sean equivalentes a RubyGems o CPAN.

Tiendo a mantener mis sistemas de desarrollo ejecutando las últimas versiones de los módulos a medida que los desarrolladores los actualizan, y congelo mis sistemas de producción en las versiones establecidas. Tanto RubyGems como CPAN hacen que sea más fácil encontrar módulos al enumerar lo que está disponible, luego lo instalan y luego los actualizan individualmente o a granel si lo desean.

easy_install y pip facilitan la instalación de un módulo UNA VEZ que lo localicé a través de una búsqueda en el navegador o me enteré por otros medios, pero no me dicen qué hay disponible. Puedo nombrar explícitamente el módulo para actualizarlo, pero las aplicaciones no me dicen qué se ha actualizado ni tampoco actualizarán todo a granel si así lo deseo.

Por lo tanto, la funcionalidad básica está en pip y easy_install pero faltan características que me gustaría ver que las haga más amigables y fáciles de usar, a la par con CPAN y RubyGems.


Como nadie mencionó Pipenv aquí, me gustaría describir mis puntos de vista sobre por qué todos deberían usarlo para administrar paquetes de Python.

Como @ColonelPanic mencionó, hay varios problemas con el https://pypi.python.org/pypi y también con pip y virtualenv .

Pipenv resuelve la mayoría de los problemas con pip y también ofrece funciones adicionales.

Características Pipenv

Pipenv pretende reemplazar pip y virtualenv, lo que significa que pipenv creará automáticamente un entorno virtual separado para cada proyecto, evitando así los conflictos entre las diferentes versiones de python / versiones de paquetes para diferentes proyectos.

  • Permite compilaciones verdaderamente deterministas, al tiempo que especifica fácilmente solo lo que desea.
  • Genera y comprueba hash de archivos para dependencias bloqueadas.
  • Instale automáticamente Pythons requeridos, si pyenv está disponible.
  • Encuentra automáticamente tu proyecto en casa, recursivamente, buscando un archivo Pip.
  • Genera automáticamente un Pipfile, si uno no existe.
  • Crea automáticamente un virtualenv en una ubicación estándar.
  • Agrega / elimina paquetes automáticamente a un Pipfile cuando están desinstalados / instalados.
  • Carga automáticamente archivos .env, si existen.

Si ya has trabajado en proyectos Python, te darás cuenta de que estas características hacen que administrar paquetes sea mucho más fácil.

Otros comandos

  • check las vulnerabilidades de seguridad y afirma que el entorno actual cumple con los requisitos de PEP 508. ( que creo que es una gran característica, especialmente después de esto - Paquetes maliciosos en PyPi )
  • graph le mostrará un gráfico de dependencia de sus dependencias instaladas.

Puedes leer más sobre esto aquí - Pipenv .

Instalación

Puede encontrar la documentación de instalación here

PD: si te gustó trabajar con las requests paquete Python, te complacería saber que pipenv es del mismo desarrollador Kenneth Reitz


En Windows, instale http://chocolatey.org/ luego

choco install python

Abra una nueva ventana cmd con la RUTA actualizada. Siguiente, hacer

choco install pip

Después de eso puedes

pip install pyside pip install ipython ...




No veo MacPorts o Homebrew mencionados en otras respuestas aquí, pero dado que los veo mencionados en otro lugar en para preguntas relacionadas, agregaré mi propio US $ 0.02 que mucha gente parece considerar MacPorts como no solo un paquete administrador de paquetes en general (a partir de hoy listan 16311 paquetes / puertos, 2931 que coinciden con "python", aunque solo para Mac), pero también como un administrador de paquetes decente (tal vez mejor) para paquetes / módulos de Python:

Pregunta

"... ¿Cuál es el método que utilizan los desarrolladores de python Mac para gestionar sus módulos?"

Respuestas

SciPy

"Los Mac (a diferencia de Linux) no vienen con un administrador de paquetes, pero hay un par de gestores de paquetes populares que puede instalar. Macports ..."

Todavía estoy debatiendo sobre si usar MacPorts o no, pero en este momento me estoy inclinando en esa dirección.


Se llama setuptools. Lo ejecuta con el comando "easy_install".

Puede encontrar el directorio en http://pypi.python.org/


Y solo para proporcionar un contraste, también hay pip .


El Python Package Index (PyPI) parece ser estándar:

  • Para instalar un paquete: pip install MyProject
  • Para actualizar un paquete pip install --upgrade MyProject
  • Para arreglar una versión de un paquete pip install MyProject==1.0

Puede instalar el administrador de paquetes de la siguiente manera:

curl -O http://python-distribute.org/distribute_setup.py python distribute_setup.py easy_install pip

Referencias