¡Saludos!, el presente post tiene la intención de informar sobre el manejo de paquetes de Python usando la línea de comandos de ANACONDA.
Cabe mencionar que hay dos formas trabajar con Python:
Ahora sí podemos empezar. Comenzando por el título del post...
Según su documentación, es un sistema de gestión de paquetes de código abierto y un sistema de gestión del entorno que se ejecuta en Windows, macOS y Linux.
Conda como administrador de paquetes le ayuda a encontrar e instalar paquetes. Si necesita un paquete que requiere una versión diferente de Python, no es necesario que cambie a un administrador de entorno diferente porque conda también es un administrador de entorno. Con solo unos pocos comandos, puede configurar un entorno totalmente separado para ejecutar esa versión diferente de Python, mientras continúa ejecutando su versión habitual de Python en su entorno normal.
Anaconda es una distribución de los lenguajes de programación Python y R para computación científica (ciencia de datos, aplicaciones de aprendizaje automático, procesamiento de datos a gran escala, análisis predictivo, etc.), que tiene como objetivo simplificar la administración y la implementación de paquetes.
Entonces:
conda install anaconda.
El tutorial consta de 4 partes:
Para empezar, es necesario tener instalada alguna versión de
Anaconda. Posterior a ello, abrir el Anaconda Prompt como se muestra a continuación:
También puede aparecer como
Anaconda Prompt (anaconda3)
Se visualizará el terminal de Anaconda como una ventana oscura en la cual podemos escribir comandos de Conda. A continuación veremos los principales comandos usados en el terminal de Anaconda (los recuadros con fondo negro "simulan" el Anaconda Prompt).
Al manejar una herramienta nueva como Conda es entendible perderse ni saber como empezar. Al trabajar con Conda, todos los comandos deben iniciar con la palabra conda y posterior a ello, los argumentos específicos.
Cuando se escriba --help para argumentos específicos, al final de cada resultado se mostrarán ejemplos.
Para ver la lista de comandos disponibles se usa conda --help como se muestra a continuación:
(base) C:\Users\LENOVO>conda --help
o
(base) C:\Users\LENOVO>conda -h
Y debajo se mostrará el resultado de haber ingresado tal comando:
usage: conda-script.py [-h] [-V] command ...
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
command
clean Remove unused packages and caches.
compare Compare packages between conda environments.
config Modify configuration values in .condarc. This is modeled
after the git config command. Writes to the user .condarc
file (C:\Users\LENOVO\.condarc) by default.
create Create a new conda environment from a list of specified
packages.
help Displays a list of available conda commands and their help
strings.
info Display information about current conda install.
init Initialize conda for shell interaction. [Experimental]
install Installs a list of packages into a specified conda
environment.
list List linked packages in a conda environment.
package Low-level conda package utility. (EXPERIMENTAL)
remove Remove a list of packages from a specified conda environment.
uninstall Alias for conda remove.
run Run an executable in a conda environment. [Experimental]
search Search for packages and display associated information. The
input is a MatchSpec, a query language for conda packages.
See examples below.
update Updates conda packages to the latest compatible version.
upgrade Alias for conda update.
optional arguments:
-h, --help Show this help message and exit.
-V, --version Show the conda version number and exit.
conda commands available from other packages:
build
convert
debug
develop
env
index
inspect
metapackage
render
server
skeleton
verify
Qué versión de conda tengo instalado con
conda --version .
(base) C:\Users\LENOVO>conda --version
conda 4.9.2
Los paquetes de Conda son archivos que contienen un conjunto de recursos: generalmente bibliotecas y ejecutables, pero no siempre.
Nota
Para instalar un paquete en Python, dependiendo del sistema operativo, es necesario conocer que se puede instalar mediante:Recomendación: Si se usa Anaconda en local, usar
- PIP: instalador recomendado en Python (ya que conecta con PyPi) pero requiere manejar un sistema operativo Linux.
$pip install rasterio- Conda: Alternativo a PIP. Permite administrar ambientes virtuales e instalar paquetes fácilmente (mediante código en terminal o por interfaz gráfica en Anaconda).
conda install -c conda-forge rasteriocondapara instalar los paquetes necesarios, no PIP en la línea de comandos debido a que Anaconda prepara sus repositorios para ser descargados de manera eficiente con Conda.
El comando relacionado con los paquetes es list y para ver sus argumentos disponibles se usa conda list --help .
(base) C:\Users\LENOVO>conda list --help
usage: conda-script.py list [-h] [-n ENVIRONMENT | -p PATH] [--json] [-v] [-q]
[--show-channel-urls] [-c] [-f] [--explicit]
[--md5] [-e] [-r] [--no-pip]
[regex]
List linked packages in a conda environment.
Options:
positional arguments:
regex List only packages matching this regular expression.
optional arguments:
-h, --help Show this help message and exit.
--show-channel-urls Show channel urls. Overrides the value given by `conda
config --show show_channel_urls`.
-c, --canonical Output canonical names of packages only. Implies --no-
pip.
-f, --full-name Only search for full names.
--explicit List explicitly all installed conda packaged with URL
(output may be used by conda create --file).
--md5 Add MD5 hashsum when using --explicit
-e, --export Output requirement string only (output may be used by
conda create --file).
-r, --revisions List the revision history and exit.
--no-pip Do not include pip-only installed packages.
Target Environment Specification:
-n ENVIRONMENT, --name ENVIRONMENT
Name of environment.
-p PATH, --prefix PATH
Full path to environment location (i.e. prefix).
Output, Prompt, and Flow Control Options:
--json Report all output as json. Suitable for using conda
programmatically.
-v, --verbose Use once for info, twice for debug, three times for
trace.
-q, --quiet Do not display progress bar.
Examples:
List all packages in the current environment:
conda list
List all packages installed into the environment 'myenv':
conda list -n myenv
Save packages for future use:
conda list --export > package-list.txt
Reinstall packages from an export file:
conda create -n myenv --file package-list.txt
La mayoría de los paquetes de Conda utilizan un sistema llamado control de versiones semántico para identificar distintas versiones de un paquete de software sin ambigüedades.
En el control de versiones semántico, el software se etiqueta con un identificador de versión de tres partes de la forma
MAJOR.MINOR.PATCH; los componentes de la etiqueta son números enteros no negativos separados por puntos.
Muchas herramientas de línea de comandos muestran su identificador de versión ejecutando la herramienta --version. Esta información a veces se puede mostrar o documentar de otras formas. Por ejemplo, supongamos que en algún sistema, una determinada versión de Python está instalada y usted pregunta al respecto de esta manera:
python -c "import sys; sys.version"
'1.0.1 (Mar 26 2014)'
donde significa: La versión MAYOR es 1, el PATCH es 1.
(base) C:\Users\LENOVO>conda list
Listará todos los paquetes instalados en local junto con sus respectivas versiones.
# packages in environment at C:\Users\LENOVO\anaconda3:
#
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
absl-py 0.10.0 py37hc8dfbb8_1 conda-forge
aiohttp 3.6.2 py37h4ab8f01_1 conda-forge
alabaster 0.7.12 py37_0
anaconda 2020.02 py37_0
anaconda-client 1.7.2 py37_0
. . .
. . .
. . .
zipp 6.2.0 py_0
zlib 1.2.11 h62dcd97_3
zstd 1.3.7 h508b16e_0
Notese la ubicación de los packages:
# packages in environment at C:\Users\LENOVO\anaconda3
Generalmente para instalar algo con Conda se usa
conda install. Veremos los argumentos disponibles
con:
(base) C:\Users\LENOVO>conda install --help
usage: conda-script.py install [-h] [--revision REVISION]
[-n ENVIRONMENT | -p PATH] [-c CHANNEL]
[--use-local] [--override-channels]
[--repodata-fn REPODATA_FNS]
[--strict-channel-priority]
[--no-channel-priority]
[--no-deps | --only-deps] [--no-pin] [--copy]
[--no-shortcuts] [-C] [-k] [--offline] [-d]
[--json] [-q] [-v] [-y] [--download-only]
[--show-channel-urls] [--file FILE]
[--force-reinstall]
[--freeze-installed | --update-deps | -S | --update-all | --update-specs]
[-m] [--clobber] [--dev]
[package_spec [package_spec ...]]
Installs a list of packages into a specified conda environment.
This command accepts a list of package specifications (e.g, bitarray=0.8)
and installs a set of packages consistent with those specifications and
compatible with the underlying environment. If full compatibility cannot
be assured, an error is reported and the environment is not changed.
Conda attempts to install the newest versions of the requested packages. To
accomplish this, it may update some packages that are already installed, or
install additional packages. To prevent existing packages from updating,
use the --freeze-installed option. This may force conda to install older
versions of the requested packages, and it does not prevent additional
dependency packages from being installed.
If you wish to skip dependency checking altogether, use the '--no-deps'
option. This may result in an environment with incompatible packages, so
this option must be used with great caution.
conda can also be called with a list of explicit conda package filenames
(e.g. ./lxml-3.2.0-py27_0.tar.bz2). Using conda in this mode implies the
--no-deps option, and should likewise be used with great caution. Explicit
filenames and package specifications cannot be mixed in a single command.
Options:
positional arguments:
package_spec Packages to install or update in the conda
environment.
optional arguments:
-h, --help Show this help message and exit.
--revision REVISION Revert to the specified REVISION.
--file FILE Read package versions from the given file. Repeated
file specifications can be passed (e.g. --file=file1
--file=file2).
--dev Use `sys.executable -m conda` in wrapper scripts
instead of CONDA_EXE. This is mainly for use during
tests where we test new conda source against old
Python versions.
Target Environment Specification:
-n ENVIRONMENT, --name ENVIRONMENT
Name of environment.
-p PATH, --prefix PATH
Full path to environment location (i.e. prefix).
Channel Customization:
-c CHANNEL, --channel CHANNEL
Additional channel to search for packages. These are
URLs searched in the order they are given (including
local directories using the 'file://' syntax or simply
a path like '/home/conda/mychan' or '../mychan').
Then, the defaults or channels from .condarc are
searched (unless --override-channels is given). You
can use 'defaults' to get the default packages for
conda. You can also use any name and the .condarc
channel_alias value will be prepended. The default
channel_alias is http://conda.anaconda.org/.
--use-local Use locally built packages. Identical to '-c local'.
--override-channels Do not search default or .condarc channels. Requires
--channel.
--repodata-fn REPODATA_FNS
Specify name of repodata on remote server. Conda will
try whatever you specify, but will ultimately fall
back to repodata.json if your specs are not
satisfiable with what you specify here. This is used
to employ repodata that is reduced in time scope. You
may pass this flag more than once. Leftmost entries
are tried first, and the fallback to repodata.json is
added for you automatically.
Solver Mode Modifiers:
--strict-channel-priority
Packages in lower priority channels are not considered
if a package with the same name appears in a higher
priority channel.
--no-channel-priority
Package version takes precedence over channel
priority. Overrides the value given by `conda config
--show channel_priority`.
--no-deps Do not install, update, remove, or change
dependencies. This WILL lead to broken environments
and inconsistent behavior. Use at your own risk.
--only-deps Only install dependencies.
--no-pin Ignore pinned file.
--force-reinstall Ensure that any user-requested package for the current
operation is uninstalled and reinstalled, even if that
package already exists in the environment.
--freeze-installed, --no-update-deps
Do not update or change already-installed
dependencies.
--update-deps Update dependencies.
-S, --satisfied-skip-solve
Exit early and do not run the solver if the requested
specs are satisfied. Also skips aggressive updates as
configured by 'aggressive_update_packages'. Similar to
the default behavior of 'pip install'.
--update-all, --all Update all installed packages in the environment.
--update-specs Update based on provided specifications.
Package Linking and Install-time Options:
--copy Install all packages using copies instead of hard- or
soft-linking.
--no-shortcuts Don't install start menu shortcuts
-m, --mkdir Create the environment directory if necessary.
--clobber Allow clobbering of overlapping file paths within
packages, and suppress related warnings.
Networking Options:
-C, --use-index-cache
Use cache of channel index files, even if it has
expired.
-k, --insecure Allow conda to perform "insecure" SSL connections and
transfers. Equivalent to setting 'ssl_verify' to
'false'.
--offline Offline mode. Don't connect to the Internet.
Output, Prompt, and Flow Control Options:
-d, --dry-run Only display what would have been done.
--json Report all output as json. Suitable for using conda
programmatically.
-q, --quiet Do not display progress bar.
-v, --verbose Can be used multiple times. Once for INFO, twice for
DEBUG, three times for TRACE.
-y, --yes Do not ask for confirmation.
--download-only Solve an environment and ensure package caches are
populated, but exit prior to unlinking and linking
packages into the prefix.
--show-channel-urls Show channel urls. Overrides the value given by `conda
config --show show_channel_urls`.
Examples:
conda install -n myenv scipy
Y para instalar un paquete específico usaremos:
conda install PKGNAME
donde PKGNAME es el nombre del paquete.
Tres formas de instalar paquetes con versiones específicas. Es opcional usar --yes al final para omitir la pregunta de [y]/[n].
conda install PACKAGE=12.3 # ultima version dentro de una serie
conda install PACKAGE=13
conda install PACKAGE=14.3.2 # versión exacta
También es posible usar condicionales para la instalación pero generalmente se usan solo los nombres ya que ésto permite la que se instale la última versión del mismo.
(base) C:\Users\LENOVO>conda list PKGNAME
Podemos escribir el nombre del paquete completo o parte del nombre. En el siguiente ejemplo buscaré el paquete earthengine-api solamente como earth:
(base) C:\Users\LENOVO>conda list earth
# packages in environment at C:\Users\LENOVO\anaconda3:
# Name Version Build Channel
earthengine-api 0.1.251 pypi_0 pypi
conda update PKGNAME
conda remove pandas -y # Ojo: tener cuidado con eliminar paquetes
conda search PKGNAME
conda search PKGNAME --info
Todos los paquetes vistos hasta ahora son publicados en el main o default channel de Anaconda Cloud (ver aquí). Un Channel es un identificador de un path (dirección) del cual los paquetes Conda pueden ser obtenidos. Usando la public cloud, instalando sin especificar.
# busqueda de canales
conda search -c conda-forge
# filtrado: omite los canales por defecto
conda search -c conda-forge --override-channels
Ejemplo: busqueda de rasterio
(base) C:\Users\LENOVO>anaconda search rasterio
Using Anaconda API: https://api.anaconda.org
Packages:
Name | Version | Package Types | Platforms | Builds
------------------------- | ------ | --------------- | --------------- | ----------
DigitalGlobe/rasterio | 1.0a9 | conda | linux-64, win-32, osx-64, win-64 |
: Rasterio reads and writes geospatial raster datasets.
IOOS/rasterio | 1.0a2 | conda | linux-64, win-32, osx-64, win-64 |
Terradue/rasterio | 0.32.0 | conda | linux-64 | py27_0
: Fast and direct raster I/O for use with Numpy and Sc
anaconda/rasterio | 1.1.0 | conda | linux-ppc64le, linux-64, win-32, os
: Rasterio reads and writes geospatial raster datasets
bucricket/rasterio | 0.32.0 | conda | osx-64 | py27_0
conda-forge/rasterio | 1.2.0 | conda | linux-64, win-32, win-64, osx-64 |
: Rasterio reads and writes geospatial raster datasets
dharhas/rasterio | 0.23.0 | conda | win-64 | py27_0
: Rasterio reads and writes geospatial raster datasets.
erdc/rasterio | 0.23.0 | conda | win-64 | py27_0
: Rasterio reads and writes geospatial raster datasets.
free/rasterio | 0.36.0 | conda | linux-64, win-32, win-64, linux-32,
: Read and write geospatial raster datasets
jesserobertson/rasterio | 0.23.0 | conda | linux-64, linux-32, osx-64 | py27_0
jhamman/rasterio_to_xarray | 2016.03.16-1558 | ipynb | [] |
: IPython notebook
kitware-danesfield-cf/rasterio | 1.0.9 | conda | linux-64 | py36h1b5fcde
: Rasterio reads and writes geospatial raster datasets
krisvanneste/rasterio | 0.26.0 | conda | win-64 | py27_0
main/rasterio | 1.1.0 | conda | linux-ppc64le, linux-64, win-32, os
: Rasterio reads and writes geospatial raster datasets
nricklin/rasterio | 1.0a9 | conda | osx-64 | np113py27_0
: Rasterio reads and writes geospatial raster datasets.
omgarcia/rasterio | 0.25.0 | conda | linux-64 | np110py27_0
robintw/rasterio | 0.35.1 | conda | osx-64 | py35_1
: Rasterio reads and writes geospatial raster datasets
sage-group/rasterio | 1.1.8 | conda | linux-ppc64le | py36h5ca1d4c_0, p
: Rasterio reads and writes geospatial raster datasets
sgillies/rasterio | 0.15 | conda | osx-64 | py27_0
test_org_002/rasterio | 0.36.0 | conda | [] | np111py27_0, np11
x_xxj/rasterio | 1.1.4 | pypi | [] |
ztessler/rasterio | 0.31.0 | conda | osx-64 | py35_0, py27_0
: Fast and direct raster I/O for use with Numpy and SciPy
Found 22 packages
Run 'anaconda show ' to get installation details
(base) C:\Users\LENOVO>conda env list
# conda environments:
#
C:\Users\LENOVO\AppData\Local\R-MINI~1
C:\Users\LENOVO\AppData\Local\R-MINI~1\envs\r-reticulate
base * C:\Users\LENOVO\anaconda3
gee C:\Users\LENOVO\anaconda3\envs\gee
python_foundation C:\Users\LENOVO\anaconda3\envs\python_foundation
Estoy usando el environment base según el * ubicado a la izquierda de la dirección.
(base) C:\Users\LENOVO>conda list numpy
# packages in environment at C:\Users\LENOVO\anaconda3:
#
# Name Version Build Channel
numpy 1.18.1 py37h93ca92e_0
numpy-base 1.18.1 py37hc3f5095_1
numpydoc 0.9.2 py_0
(base) C:\Users\LENOVO>conda list pandas
# packages in environment at C:\Users\LENOVO\anaconda3:
#
# Name Version Build Channel
pandas 1.0.1 py37h47e9c7a_0
Para ver los packages instalados en otro environment:
conda env --name ENVNAME
(base) C:\Users\LENOVO>conda list --name python_foundation rasterio
# packages in environment at C:\Users\LENOVO\anaconda3\envs\python_foundation:
#
# Name Version Build Channel
rasterio 1.1.8 py37hc4b0cd6_0 conda-forge
(base) C:\Users\LENOVO>conda list --name gee rasterio
# packages in environment at C:\Users\LENOVO\anaconda3\envs\gee:
#
# Name Version Build Channel
(base) C:\Users\LENOVO>conda list --name gee earth
# packages in environment at C:\Users\LENOVO\anaconda3\envs\gee:
#
# Name Version Build Channel
earthengine-api 0.1.229 pyh9f0ad1d_0 conda-forge
python_foundation: Sí está.gee: No está.earthengine-api en el environment gee: Sí está.
conda activate ENVNAME
Ejemplo:
# 1. Ver lista de environments
(base) C:\Users\LENOVO>conda env list
# conda environments:
#
C:\Users\LENOVO\AppData\Local\R-MINI~1
C:\Users\LENOVO\AppData\Local\R-MINI~1\envs\r-reticulate
base * C:\Users\LENOVO\anaconda3
gee C:\Users\LENOVO\anaconda3\envs\gee
python_foundation C:\Users\LENOVO\anaconda3\envs\python_foundation
# 2. Hacer el cambio
(base) C:\Users\LENOVO>conda activate python_foundation
(python_foundation) C:\Users\LENOVO>_
En caso de querer volver al environment base:
conda deactivate
(python_foundation) C:\Users\LENOVO>conda deactivate
(base) C:\Users\LENOVO>
conda create -n ENVNAME
(base) C:\Users\LENOVO>conda create -n env_prueba
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: C:\Users\LENOVO\anaconda3\envs\env_prueba
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate env_prueba
#
# To deactivate an active environment, use
#
# $ conda deactivate
(base) C:\Users\LENOVO>conda env list
# conda environments:
#
C:\Users\LENOVO\AppData\Local\R-MINI~1
C:\Users\LENOVO\AppData\Local\R-MINI~1\envs\r-reticulate
base * C:\Users\LENOVO\anaconda3
env_prueba C:\Users\LENOVO\anaconda3\envs\env_prueba
python_foundation C:\Users\LENOVO\anaconda3\envs\python_foundation
Notese que está vacío el nuevo environment.
(base) C:\Users\LENOVO>conda activate env_prueba
(env_prueba) C:\Users\LENOVO>conda list
# packages in environment at C:\Users\LENOVO\anaconda3\envs\env_prueba:
#
# Name Version Build Channel
conda env remove --name ENVNAME (es posible usar
--name o -n )
Ejemplo: Removiendo el environment gee
(base) C:\Users\LENOVO>conda env remove -n gee
Remove all packages in environment C:\Users\LENOVO\anaconda3\envs\gee:
Resultado:
(base) C:\Users\LENOVO>conda env list
# conda environments:
#
C:\Users\LENOVO\AppData\Local\R-MINI~1
C:\Users\LENOVO\AppData\Local\R-MINI~1\envs\r-reticulate
base * C:\Users\LENOVO\anaconda3
python_foundation C:\Users\LENOVO\anaconda3\envs\python_foundation
(base) C:\Users\LENOVO>
Link alternativo: Alistair Miles - Installing Python for data analysis
El manejo de datos en local como en la nube (Colab) tiene sus ventajas y desventajas: Colab permite la instalación rápida de paquetes mediante pip install o sudo apt al usar máquinas virtuales (en los servidores de google) pero la información se pierde al pasar 12 horas. En cambio trabajar en local demanda conocer los métodos de instalación y manejo de paquetes pero permite aprovechar el rápido procesamiento de una máquina personal (puede variar dependiendo de su hardware y demás).
Muchas gracias por leer. Saludos!