Solución:
Editar: vale la pena mencionarlo pip
aquí también, como conda
y pip
tienen similitudes y diferencias que son relevantes para este tema.
pip: el Administrador de paquetes de Python.
- Podrías pensar en
pip
como el equivalente en pitón del rubígem
mando -
pip
no se incluye con python de forma predeterminada. - Puede instalar Python usando homebrew, que instalará pip automáticamente:
brew install python
- La versión final de OSX no incluía pip por defecto. Para agregar pip a la versión de python de su sistema mac, puede
sudo easy_install pip
- Puede buscar y publicar paquetes de Python usando PyPI: el índice de paquetes de Python
- El archivo requirements.txt es comparable al ruby
gemfile
- Para crear un archivo de texto de requisitos,
pip freeze > requirements.txt
- Tenga en cuenta que, en este punto, tenemos Python instalado en nuestro sistema y hemos creado un archivo requirements.txt que describe todos los paquetes de Python que se han instalado en su sistema.
pyenv: Administrador de versiones de Python
- De los documentos: pyenv le permite cambiar fácilmente entre múltiples versiones de Python. Es simple, discreto y sigue la tradición de UNIX de herramientas de un solo propósito que hacen una cosa bien. Este proyecto se bifurcó de rbenv y ruby-build, y se modificó para Python.
- Mucha gente duda en usar python3.
- Si necesita usar diferentes versiones de Python,
pyenv
le permite administrar esto fácilmente.
virtualenv: Administrador de entorno de Python.
- De los documentos: El problema básico que se está abordando es uno de dependencias y versiones, e indirectamente permisos. Imagine que tiene una aplicación que necesita la versión 1 de LibFoo, pero otra aplicación requiere la versión 2. ¿Cómo puede utilizar ambas aplicaciones? Si instala todo en /usr/lib/python2.7/site-packages (o cualquiera que sea la ubicación estándar de su plataforma), es fácil terminar en una situación en la que involuntariamente actualice una aplicación que no debería actualizarse.
- Para crear un
virtualenv
, simplemente invocavirtualenv ENV
, dóndeENV
Es un directorio para colocar el nuevo entorno virtual. - Para inicializar el
virtualenv
, necesitassource ENV/bin/activate
. Para dejar de consumir, simplemente llamedeactivate
. - Una vez que active el
virtualenv
, puede instalar todos los requisitos del paquete de un espacio de trabajo ejecutandopip install -r
contra el proyectorequirements.txt
expediente.
Anaconda: Package Manager + Environment Manager + Bibliotecas científicas adicionales.
- De los documentos: Anaconda 4.2.0 incluye una instalación fácil de Python (2.7.12, 3.4.5 y / o 3.5.2) y actualizaciones de más de 100 paquetes de Python científicos y analíticos prediseñados y probados que incluyen NumPy, Pandas, SciPy, Matplotlib e IPython, con más de 620 paquetes más disponibles a través de un simple
conda install <packagename>
- Como desarrollador web, no he usado Anaconda. Son ~ 3GB incluidos todos los paquetes.
- Hay un adelgazamiento
miniconda
versión, que parece que podría ser una opción más simple que usarpip
+virtualenv
, aunque no tengo experiencia en usarlo personalmente. - Tiempo
conda
le permite instalar paquetes, estos paquetes son independientes de los paquetes de PyPI, por lo que es posible que deba usar pip adicionalmente dependiendo de los tipos de paquetes que necesite instalar.
Ver también:
- conda vs pip vs virtualenv (sección en la documentación de anaconda)
- la diferencia entre pip y conda (stackoverflow)
- la relación entre virtualenv y pyenv (stackoverflow)
Analogía simple:
- pyenv ~ rbenv
- pip ~ empaquetadora
- entorno virtual ~ gemset en rvm. Esto puede ser gestionado por el agrupador directamente sin gemset.
Como uso python3, prefiero el entorno virtual incorporado de python3 llamado venv. venv es simple y fácil de usar. Te recomiendo que leas sus documentos oficiales. El documento es breve y conciso.
En ruby, realmente no necesitamos un entorno virtual porque el empaquetador se encarga de ello. Tanto el env virtual como el empaquetado son geniales, sin embargo, tienen diferentes soluciones para resolver el mismo problema.