Usando Pip para instalar paquetes en el entorno Anaconda
conda 4.2.13 MacOSX 10.12.1
Estoy intentando instalar paquetes desde pip
un entorno nuevo (virtual) creado con anaconda. En los documentos de Anaconda dice que esto está perfectamente bien. Se hace de la misma manera que para virtualenv.
Active el entorno donde desea colocar el programa, luego instale un programa...
Creé un entorno vacío en Ananconda como este:
conda create -n shrink_venv
Actívalo:
source activate shrink_venv
Luego puedo ver en la terminal que estoy trabajando en mi entorno (shrink_venv)
. El problema surge cuando intento instalar un paquete usando pip
:
(shrink_venv): pip install Pillow
Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages
Entonces puedo ver que cree que el requisito se cumple con el paquete de todo el sistema. Entonces parece que el entorno no funciona correctamente, definitivamente no como se dice en los documentos. ¿Estoy haciendo algo mal aquí?
Solo una nota, sé que puedes usarlo conda install
para los paquetes, pero tuve un problema con Pillow de anaconda, así que quería obtenerlo de pip
, y como los documentos dicen que está bien.
Salida de which -a pip
:
/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip
ACTUALIZAR
Veo que este es un problema bastante común. Lo que descubrí es que conda env no funciona bien con PYTHONPATH
. El sistema parece buscar siempre las PYTHONPATH
ubicaciones incluso cuando se utiliza un entorno conda. Ahora siempre ejecuto unset PYTHONPATH
cuando uso un entorno conda y funciona mucho mejor. Estoy en una mac.
Para otros que se encuentran con esta situación, encontré que esta es la solución más sencilla:
Ejecute
conda create -n venv_name
yconda activate venv_name
, dondevenv_name
está el nombre de su entorno virtual.Correr
conda install pip
. Esto instalará pip en su directorio venv.Busque su directorio anaconda y busque la carpeta venv real. Debería estar en algún lugar como
/anaconda/envs/venv_name/
.Instale nuevos paquetes haciendo
/anaconda/envs/venv_name/bin/pip install package_name
.
¡Esto ahora debería instalar paquetes exitosamente usando el pip de ese entorno virtual!
Resolví este problema de la siguiente manera:
Si tiene un pip que no es Conda como su pip predeterminado pero Conda Python es su Python predeterminado (como se muestra a continuación)
>which -a pip
/home/<user>/.local/bin/pip
/home/<user>/.conda/envs/newenv/bin/pip
/usr/bin/pip
>which -a python
/home/<user>/.conda/envs/newenv/bin/python
/usr/bin/python
Luego, en lugar de simplemente llamar
pip install <package>
, puede usar el indicador del módulo -m
con Python para que use Anaconda Python para la instalación.
python -m pip install <package>
Esto instala el paquete en el directorio de la biblioteca anaconda en lugar del directorio de la biblioteca asociado con pip (que no es anaconda).
EDITAR: la razón por la que esto funciona es la siguiente:
El comando pip
hace referencia a un archivo pip/acceso directo específico ( which -a pip
le indica cuál). De manera similar, el comando python
hace referencia a un archivo Python específico ( which -a python
le indica cuál). Por una razón u otra, estos dos comandos pueden no estar sincronizados, de modo que su pip 'predeterminado' esté en una carpeta diferente a su Python predeterminado y, por lo tanto, esté asociado con una versión diferente de Python.
Por el contrario, la python -m pip
construcción no utiliza el acceso directo al que pip
apunta el comando. En cambio, le pide a Python que encuentre su versión de pip y la use para instalar un paquete.
Todo lo que tienes que hacer es abrir Anaconda Prompt y escribir
pip install package-name
Se instalará automáticamente en el entorno anaconda sin tener que usar
conda install package-name
Dado que algunos de los paquetes de conda pueden carecer de soporte con el tiempo, es necesario instalarlos usando pip y esta es una forma de hacerlo.
Si tiene pip instalado en anaconda, puede ejecutar lo siguiente en jupyter notebook o en su shell de Python que está vinculado a anaconda
pip.main(['install', 'package-name'])
Verifique su versión de pip con pip.__version__
. Si es una versión 10.x.x
o superior, instale su paquete de Python con esta línea de código
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])
En su cuaderno Jupyter, puede instalar paquetes de Python a través de pip en una celda de esta manera;
!pip install package-name
o podrías usar tu versión de Python asociada con anaconda
!python3.6 -m pip install package-name