Usando Pip para instalar paquetes en el entorno de Anaconda

177

conda 4.2.13 MacOSX 10.12.1

Estoy tratando de instalar paquetes desde pipun entorno nuevo (virtual) creado usando 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 pip un programa ...

Creé un entorno vacío en Ananconda como este:

conda create -n shrink_venv

Activalo:

source activate shrink_venv

Entonces puedo ver en la terminal que estoy trabajando en mi entorno (shrink_venv). El problema está surgiendo 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 piensa que el requisito se cumple con el paquete de todo el sistema. Por lo tanto, parece que el entorno no funciona correctamente, definitivamente no es como se dice en los documentos. ¿Estoy haciendo algo mal aquí?

Solo una nota, sé que puedes usarlo conda installpara los paquetes, pero he tenido un problema con Pillow de anaconda, así que quería obtenerlo pip, y desde que los documentos dicen que está bien.

Salida de which -a pip:

/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip

** ACTUALIZACIÓN ** Veo que este es un problema bastante común. Lo que he encontrado es que el conda env no juega bien con el PYTHONPATH. Parece que el sistema siempre se ve en las ubicaciones de PYTHONPATH, incluso cuando está utilizando un entorno conda. Ahora, siempre ejecuto unset PYTHONPATHcuando uso un entorno conda, y funciona mucho mejor. Estoy en una Mac

jeffery_the_wind
fuente
9
¿Intentaste un conda install pip?
languitar
44
¿Puedes agregar el resultado de which -a piptu pregunta por favor?
cel
1
¿Tiene un PYTHONPATHconjunto de variables de entorno?
darthbith
1
Tuve un problema similar. El uso explícito del pip que forma parte de Anaconda pareció funcionar para mí.
Arsene Lupin
1
¿Es realmente seguro instalar cosas usando pip y conda? Pensé que podría tener problemas, como no saber qué versión solucionar, desinstalar ...
Charlie Parker

Respuestas:

201

Para otros que se encuentran con esta situación, descubrí que esta es la solución más sencilla:

  1. Ejecute conda create -n venv_namey source activate venv_name, donde venv_nameestá el nombre de su entorno virtual.

  2. Ejecutar conda install pip. Esto instalará pip en su directorio venv.

  3. Encuentre su directorio anaconda y encuentre la carpeta venv real. Debería estar en algún lugar como /anaconda/envs/venv_name/.

  4. Instalar nuevos paquetes haciendo /anaconda/envs/venv_name/bin/pip install package_name.

¡Esto ahora debería instalar con éxito paquetes usando el pip de ese entorno virtual!

Molino
fuente
2
¿Ha bincambiado la ruta de la carpeta? ¿Ya no lo veo en la venv_namecarpeta?
Jack
Acabo de intentar crear un nuevo venv, parece que bintodavía está en el mismo lugar.
Molino de viento
2
No tenía la carpeta 'bin', por lo que los pasos anteriores ayudaron. Una cosa que agregaría es ejecutar 'which pip' ayuda a determinar qué 'pip' está realmente instalando paquetes y 'pip freeze' da la lista de paquetes instalados en el entorno
Mykola
2
Tengo una situación en la que, aunque mi fuente está activada, mis instalaciones no se realizan en el entorno. Se instalan en la ubicación predeterminada de Python.
Saisumanth Gopisetty
44
Esta respuesta es en gran medida: Ejecutar pipdesde su env Conda (ya sea el entorno o no), e instalar el paquete que desea utilizar el pipejecutable dentro de la carpeta Conda (mi caso: AppData\Local\Continuum\anaconda3\Scripts)
Manuel Martínez
80

Todo lo que tiene que hacer es abrir el mensaje de Anaconda 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 tiempo extra de soporte, es necesario instalarlo 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.xo 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 python a través de pip en una celda de esta manera;

!pip install package-name

o puedes usar tu versión de Python asociada con anaconda

!python3.6 -m pip install package-name
sambeth
fuente
66
¿Cómo se "abre el símbolo de Anaconda"
Thomas Browne
3
En Windows, debe buscar 'anaconda prompt' utilizando el ícono de búsqueda o la entrada que se encuentra en la barra de tareas y abrir
2017
@sambeth en mac?
Parthapratim Neog
1
Creo que la clave es ejecutar el pip de su anaconda, que se encuentra en su entorno global o específico de anaconda.
matanster
2
Esta respuesta es incorrecta. El punto central de la pregunta es que a veces no se instala en el entorno. Se instala a nivel mundial. Para evitar eso, primero debe ejecutar conda install pipdentro del entorno para asegurarse de que está utilizando una versión local de pip.
campesino
33

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 solo llamar pip install <package>, puede usar el indicador de módulo -mcon python para que use la anaconda python para la instalación

python -m pip install <package>

Esto instala el paquete en el directorio de la biblioteca anaconda en lugar de hacerlo en el directorio de la biblioteca asociado con el pip (que no es anaconda)

alex_danielssen
fuente
3
Esta debería ser la respuesta. Funciona perfectamente en Windows.
Geordie
9

Si no agregó pip al crear el entorno conda

conda create -n env_name pip

y tampoco instaló pip dentro del entorno

source activate env_name
conda install pip

entonces el único pip que tienes es el pip del sistema, que instalará paquetes a nivel mundial.

Bus como puedes ver en este número , incluso si realizó cualquiera de los procedimientos mencionados anteriormente, el comportamiento de pip dentro del entorno de conda aún no está definido.

Para garantizar el uso del pip instalado dentro del entorno conda sin tener que escribir el extenso /home/username/anaconda/envs/env_name/bin/pip, escribí una función de shell:

# Using pip to install packages inside conda environments.
cpip() {
    ERROR_MSG="Not in a conda environment."
    ERROR_MSG="$ERROR_MSG\nUse \`source activate ENV\`"
    ERROR_MSG="$ERROR_MSG to enter a conda environment."

    [ -z "$CONDA_DEFAULT_ENV" ] && echo "$ERROR_MSG" && return 1

    ERROR_MSG='Pip not installed in current conda environment.'
    ERROR_MSG="$ERROR_MSG\nUse \`conda install pip\`"
    ERROR_MSG="$ERROR_MSG to install pip in current conda environment."

    [ -e "$CONDA_PREFIX/bin/pip" ] || (echo "$ERROR_MSG" && return 2)

    PIP="$CONDA_PREFIX/bin/pip"
    "$PIP" "$@"
}

Espero que esto te sea útil.

Allen Ye
fuente
8

Esto es lo que funcionó para mí (consulte la imagen vinculada)

  1. Anaconda abierta
  2. Seleccione Entornos en el panel izquierdo debajo de inicio
  3. Justo a la derecha de donde seleccionó y debajo de la barra de "entornos de búsqueda", debería ver base (root). Haz click en eso
  4. Debería aparecer un triángulo que apunta a la derecha, haga clic en él y seleccione "abrir terminal"
  5. Use el comando regular de instalación de pip aquí. No es necesario señalar un entorno / ruta

Para referencia futura, puede encontrar la carpeta a la que están descargando sus paquetes si tiene un requisito ya satisfecho. Puedes verlo si te desplazas hacia arriba en la terminal. Debería leer algo como: requisito ya satisfecho y luego la ruta

[ pip install anaconda]

modatamoproblemas
fuente
3

Para aquellos que deseen instalar una pequeña cantidad de paquetes en conda con pip y luego usar,

sudo $(which pip) install <instert_package_name>

trabajó para mi.

Explicación

Parece, para mí de todos modos, que which pipes muy confiable para encontrar el camino de conda env pip a donde estás. Sin embargo, cuando se usa sudo, esto parece redirigir rutas o romper esto.

Usar el $(which pip)ejecuta esto independientemente de sudocualquiera de los comandos y es similar a ejecutarse /home/<username>/(mini)conda(3)/envs/<env_name>/pipen Linux. Esto se debe a que $()se ejecuta por separado y la salida de texto se agrega al comando externo.

Mesitas Bobby
fuente
3

Todas las respuestas anteriores se basan principalmente en el uso de virtualenv. Solo tengo una nueva instalación de anaconda3 y no tengo ningún virtualenv instalado. Por lo tanto, he encontrado una mejor alternativa a la misma sin preguntarme acerca de crear virtualenv.

Si tiene muchas versiones de pip y python instaladas en linux, primero ejecute el siguiente comando para enumerar todas las rutas de pip instaladas.

donde esta pip

Obtendrá algo como esto como salida.

pip: / usr / bin / pip /home/prabhakar/anaconda3/bin/pip/usr/share/man/man1/pip.1.gz

Copie la ruta de pip que desea usar para instalar su paquete y péguelo después de reemplazar sudo /home/prabhakar/anaconda3/bin/pipen el siguiente comando.

/home/prabhakar/anaconda3/bin/pipinstalación de sudo<package-name>

Esto funcionó bastante bien para mí. Si tiene algún problema para instalar, por favor comente.

Prabhakar Prasad
fuente
3

si está utilizando el sistema operativo Windows, abra el símbolo de Anaconda y escribaactivate yourenvname

Y si está utilizando Mac o Linux OS, abra Terminal y escribasource activate yourenvname

yourenvname Aquí está el entorno deseado en el que desea instalar el paquete pip

después de escribir el comando anterior, debe ver que el nombre de su entorno cambia basea su entorno escrito yourenvnameen la salida de la consola (lo que significa que ahora está en el contexto de entorno deseado)

Entonces todo lo que necesita hacer es un pip installcomando normal, por ejemplopip install yourpackage

Al hacerlo, el paquete pip se instalará en su entorno Conda

Code_Worm
fuente
3

python -m pip install Pillow

Utilizará pip de Python actual activado con

source activate shrink_venv

intsco
fuente
3

Depende de cómo configuró su variable de entorno PATH. Cuando su shell resuelve la llamada a pip, ¿cuál es el primer contenedor que encontrará?

(test)$ whereis pip
pip: /home/borja/anaconda3/envs/test/bin/pip /home/borja/anaconda3/bin/pip

Asegúrese de que la carpeta bin de su instalación de anaconda esté antes de / usr / lib (dependiendo de cómo instaló pip). Entonces un ejemplo:

(test) borja@xxxx:~$ pip install djangorestframework
....
Successfully installed asgiref-3.2.3 django-3.0.3 djangorestframework-3.11.0 pytz-2019.3 sqlparse-0.3.1

(test) borja@xxxx:~$ conda list | grep django
django                    3.0.3                    pypi_0    pypi
djangorestframework       3.11.0                   pypi_0    pypi

Podemos ver que djangorestframework se instaló en mi entorno de prueba, pero si reviso mi base:

(base) borja@xxxx:~$ conda list | grep django

Esta vacio.

Personalmente, me gusta manejar toda mi configuración de RUTA usando .pam_environment , aquí un ejemplo:

(base) borja@xxxx:~$ cat .pam_environment
PATH DEFAULT=/home/@{PAM_USER}/anaconda3/bin:${PATH}

Un comentario extra. La forma en que instala pip puede crear problemas:

  • Debe usar: conda install pip -> los nuevos paquetes instalados con pip se agregarán a la lista de conda.

  • Usted shodul NO utiliza: sudo apt instalar python3-pip -> nuevos paquetes no se añadirán a la lista de Conda (por lo que no son gestionados por Conda) pero todavía se podrán usarlos (posibilidad de conflicto).

BorjaEst
fuente
Un comentario extra. La forma en que instala pip puede crear problemas: - Debe usar: conda install pip -> los nuevos paquetes instalados con pip se agregarán a la lista de conda. - NO DEBE usar: sudo apt install python3-pip -> los nuevos paquetes no se agregarán a la lista de conda (por lo tanto, no se administran), pero aún podrá usarlos (posibilidad de conflicto).
BorjaEst
hola a todos :) ¿Cómo puedo eliminar una carpeta bin como /usr/liben caso de que esté antes de mi carpeta bin anaconda cuando se ejecuta whereis pip?
Lenn
Trate sudo apt remove python3-pipde eliminar la pipa de la distribución de Linux y luego en el ambiente Conda que está utilizando: conda install -c anaconda pip.
BorjaEst
2

Estaba enfrentando un problema al instalar un paquete no conda en anaconda, seguí la respuesta que más me gustó aquí y no funcionó bien (tal vez porque mi anaconda está en el directorio F y el entorno creado estaba en C y no se creó la carpeta bin, No tengo idea pero no funcionó).

De acuerdo con anaconda, pip ya está instalado (que se encuentra usando el comando " conda list" en el indicador de anaconda), pero los paquetes de pip no se instalaron, así que esto es lo que hice, instalé pip nuevamente y luego pip instaló el paquete.

conda install pip
pip install see

see es un paquete no conda.

Abhijeet sinha
fuente
2

Bueno, probé todos los métodos anteriores. Ninguno me funcionó. Lo siguiente funcionó para mí:

  1. Activa tu entorno
  2. Descargue el paquete .whl manualmente desde https://pypi.org/simple/ /
  3. Navegue a la carpeta donde descargó el .whl desde la línea de comandos con su entorno activado
  4. realizar: pip install package_name_whatever.whl
MGLondon
fuente
1

Si SOLO quieres tener una instalación de conda. Simplemente elimine todas las otras rutas de python de su variable PATH.

Dejando solo:

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin

Esto le permite usarlo pip install *y se instalará directamente en su instalación de conda.

moto
fuente
-1

Solo activate shrink_venvlo haré también. Intenté crear un nuevo entorno y mi instalación de conda no me permite usar la fuente al principio.

Elisavet Fakou
fuente
No necesitas sourceal principio si estás en Windows
KWx