que para paquetes paquete installing descargar comandos python pip anaconda env conda

python - para - ¿Cómo puedo hacer un seguimiento de los paquetes instalados por pip en un entorno Anaconda(Conda)?



pip install conda (9)

He instalado y he estado usando la distribución Anaconda Python, y he comenzado a usar el entorno Anaconda (Conda). Puedo usar el conda install... estándar conda install... para colocar paquetes de la distribución en mis entornos, pero para usar algo externo (es decir, Flask-WTF, frasco-sqlalchemy y alambique) necesito usar la pip install en el entorno activo. Sin embargo, cuando miro el contenido del entorno, ya sea en el directorio o usando la conda list estos paquetes de pip install no se muestran.

El uso de la pip freeze y la pip list solo enumera cada paquete que he instalado.

¿Hay alguna manera de hacer un seguimiento de lo que hay en cada uno de mis conda Anaconda (tanto pip como conda instalados)?


Creo que lo que falta aquí es que cuando lo haces:

>pip install .

para instalar un paquete local con un setup.py, instala un paquete que es visible para todos los conda envs que usan la misma versión de python. Note que estoy usando la versión conda de pip!

por ejemplo, si estoy usando python2.7, coloca el paquete local aquí:

/usr/local/anaconda/lib/python2.7/site-packages

Si más tarde creo un nuevo env conda con python = 2.7 (= el valor predeterminado):

>conda create --name new >source activate new

Y luego hazlo:

(new)>conda list // empty - conda is not aware of any packages yet

Sin embargo, si lo hago:

(new)>pip list // the local package installed above is present

Entonces, en este caso, conda no sabe sobre el paquete pip, pero el paquete está disponible para python.

Sin embargo, si en su lugar instalo el paquete local (nuevamente usando pip) después de haber creado (y activado) el nuevo conda env, ahora conda lo ve:

(new)>conda list // sees that the package is there and was installed by pip

Así que creo que la interacción entre conda y pip tiene algunos problemas, es decir, usar pip para instalar un paquete local desde dentro de una conda env hace que ese paquete esté disponible (pero no visto a través de conda list) para todos los conda envs de la misma versión de python.


Es por eso que escribí Picky: http://picky.readthedocs.io/

Es un paquete de Python que rastrea los paquetes instalados tanto con pip como conda en virtualenvs y conda envs.


Hay una rama de conda (new-pypi-install) que agrega una mejor integración con pip y PyPI. En particular, la lista de conda también mostrará los paquetes instalados de pip y la instalación de conda intentará primero encontrar un paquete de conda y, en su defecto, usará pip para instalar el paquete.

Esta rama está programada para fusionarse a finales de esta semana, de modo que la versión 2.1 de la conda tendrá una mejor integración de pip con conda.


Mi which pip muestra la siguiente ruta:

$ which pip /home/kmario23/anaconda3/bin/pip

Entonces, cualquier paquete que instale usando pip install <package-name> tendrá que reflejarse en la lista de paquetes cuando la lista se exporte usando:

$ conda list --export > conda_list.txt

Pero, yo no. Entonces, en cambio, utilicé el siguiente comando como lo sugirieron varios otros:

# get environment name by $ conda-env list # get list of all installed packages by (conda, pip, etc.,) $ conda-env export -n <my-environment-name> > all_packages.yml # if you haven''t created any specific env, then just use ''root''

Ahora, puedo ver todos los paquetes en mi archivo all-packages.yml .


Normalmente prefijo la carpeta ''bin / pip'' para el entorno específico en el que desea instalar el paquete antes del comando ''pip''. Por ejemplo, si desea instalar pymc3 en el entorno py34, debe usar este comando:

~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3

Básicamente, solo necesita encontrar la ruta correcta a la carpeta ''bin / pip'' de su entorno y colocarla antes del comando de instalación.


Seguí la respuesta de @Viktor Kerkez y tuve un éxito mixto. Encontré que a veces esta receta de

conda esqueleto pypi PAQUETE

conda build PAQUETE

parecería que todo funcionó, pero no pude importar con éxito el PAQUETE. Hace poco pregunté sobre esto en el grupo de usuarios de Anaconda y escuché de @Travis Oliphant sobre la mejor manera de usar conda para construir y administrar paquetes que no se envían con Anaconda. Puedes leer este hilo here , pero voy a describir el siguiente enfoque para que las respuestas a la pregunta del OP sean más completas ...

Ejemplo: voy a instalar el excelente paquete de prettyplotlib en Windows usando conda 2.2.5.

1a) conda build --build-recipe prettyplotlib

Verá que todos los mensajes de compilación se ven bien hasta la sección de PRUEBA final de la compilación. Vi este error

Archivo "C: / Anaconda / conda-bld / test-tmp_dir / run_test.py", línea 23 importación Ninguno SyntaxError: no se puede asignar a Ninguno PRUEBAS FALLADAS: prettyplotlib-0.1.3-py27_0

1b) Vaya a / conda-recipes / prettyplotlib y edite el archivo meta.yaml. Actualmente, los paquetes que se configuran como en el paso 1a resultan en archivos yaml que tienen un error en la sección de test . Por ejemplo, así es como el mío buscó a prettyplotlib

test: # Python imports imports: - - prettyplotlib - prettyplotlib

Edite esta sección para eliminar la línea en blanco precedida por - y también elimine la línea redundante prettyplotlib. Al momento de escribir estas líneas, he encontrado que necesito editar la mayoría de los archivos meta.yaml como este para paquetes externos que estoy instalando con conda, lo que significa que hay una línea de importación en blanco que causa el error junto con una importación redundante del paquete dado .

1c) Vuelva a ejecutar el comando desde 1a, que debería completarse sin error esta vez. Al final de la construcción, se te preguntará si deseas subir la construcción a https://binstar.org/ . Ingresé No y luego vi este mensaje:

Si desea cargar este paquete a binstar.org más tarde, escriba:

$ binstar upload C: / Anaconda / conda-bld / win-64 / prettyplotlib-0.1.3-py27_0.tar.bz2

Ese archivo tar.bz2 es la compilación que ahora necesita instalar realmente.

2) conda install C:/Anaconda/conda-bld/win-64/prettyplotlib-0.1.3-py27_0.tar.bz2

Siguiendo estos pasos, he usado exitosamente conda para instalar varios paquetes que no vienen con Anaconda. Anteriormente, había instalado algunos de estos usando pip, así que pip uninstall PACKAGE antes de instalar el PAQUETE con conda. Al usar conda, ahora puedo administrar (casi) todos mis paquetes con un solo enfoque en lugar de tener una mezcla de cosas instaladas con conda, pip, easy_install y python setup.py install.

En cuanto al contexto, creo que esta reciente publicación de blog de @Travis Oliphant será útil para personas como yo que no aprecian todo lo que entra en un paquete robusto de Python, pero ciertamente aprecian cuando las cosas "simplemente funcionan". conda parece una gran manera de avanzar ...


conda-env ahora hace esto automáticamente (si pip se instaló con conda).

Puede ver cómo funciona esto al usar la herramienta de exportación utilizada para migrar un entorno:

conda env export -n <env-name> > environment.yml

El archivo mostrará una lista de paquetes conda y paquetes pip:

name: stats channels: - javascript dependencies: - python=3.4 - bokeh=0.9.2 - numpy=1.9.* - nodejs=0.10.* - flask - pip: - Flask-Testing

Si desea seguir con la exportación del entorno, mueva environment.yml a la nueva máquina host y ejecute:

conda env create -f path/to/environment.yml


conda env export enumera todos los paquetes de conda y pip en un entorno. conda-env debe instalarse en la raíz de conda install -c conda conda-env ( conda install -c conda conda-env ).

Para escribir un archivo environment.yml que describa el entorno actual:

conda env export > environment.yml

Referencias


conda solo hará un seguimiento de los paquetes que instaló. Y pip le dará los paquetes que fueron instalados usando el instalador pip o usaron setuptools en su setup.py para que conda build generara la información del huevo. Entonces tienes básicamente tres opciones.

  1. Puede tomar la unión de la conda list y la pip freeze y administrar paquetes que se instalaron usando conda (que se muestra en la conda list ) con el conda paquetes de conda y los que están instalados con pip (que se muestran en pip freeze pero no en conda list ) con pip .

  2. Instale en su entorno solo python , pip y distribute paquetes y administre todo con pip . (Esto no es tan trivial si estás en Windows ...)

  3. Cree sus propios paquetes de conda y administre todo con conda .

Personalmente, recomendaría la tercera opción, ya que es muy fácil crear paquetes de conda . Hay un repositorio git de recetas de ejemplo en la cuenta github del continuo. Pero generalmente se reduce a:

conda skeleton pypi PACKAGE conda build PACKAGE

o solo:

conda pipbuild PACKAGE

Además, cuando los haya creado una vez, puede cargarlos a https://binstar.org/ e instalar desde allí.

Entonces tendrás todo administrado usando conda .