¡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 rasterio
conda
para 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_0Notese 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!