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).
- https://rubygems.org/gems/rails Página de RubyGems para los
rails
paquete - https://www.npmjs.org/package/express Página de Npm para el paquete
express
- 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
...
Eso sería easy_install .
Hay al menos dos, easy_install y su sucesor pip .
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
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