python - librerias - ¿Cómo puedo alojar mi propio repositorio privado de conda?
que es anaconda python (2)
Tengo algunos proyectos de python que dependen unos de otros. Tengo diferentes versiones de lanzamiento para cada proyecto y diferentes proyectos pueden depender de diferentes versiones de lanzamiento de un proyecto en particular. Me gustaría crear mi propio repositorio de conda en un servidor interno donde pueda enviar las versiones de estos proyectos como paquetes de conda y los otros proyectos pueden instalar la versión requerida desde allí. es posible? ¿Si es así, cómo?
Hay dos partes en esto: cómo crear el canal y cómo usarlo. La segunda parte es la más difícil de hacer bien.
La primera parte se describe en detalle en la documentación de conda . Puede servir el canal directamente desde archivos o a través de un servidor web estático.
Para usar el canal, un enfoque es el -c file://tmp/my-conda-channel/
, pero las versiones recientes de conda permiten una solución mucho mejor a través de canales personalizados que se agregaron (recientemente?) A conda.
La documentación está disponible a través de conda config --describe
que incluye esta parte:
# custom_channels (map: str)
# A map of key-value pairs where the key is a channel name and the value
# is a channel location. Channels defined here override the default
# ''channel_alias'' value. The channel name (key) is not included in the
# channel location (value). For example, to override the location of
# the ''conda-forge'' channel where the url to repodata is
# https://anaconda-repo.dev/packages/conda-forge/linux-64/repodata.json,
# add an entry ''conda-forge: https://anaconda-repo.dev/packages''.
#
# custom_channels: {}
La sintaxis para agregar un canal no está documentada, pero al leer la fuente se ve la invocación correcta:
conda --set custom_channels.my-conda-channel file://tmp/
(Nota: my-conda-channel/
no forma parte de la ruta). Con esto agregado a su configuración, ahora puede usar su propio canal de la misma manera que conda-forge
u otros canales ''incorporados'':
conda install -c my-conda-channel my-cool-package
Para cualquier persona en una configuración de MS Windows, el conjunto correcto de barras inclinadas y barras invertidas para usar esto con un file:////SOMECORP/Corp/conda/channels/
compartido de Windows es file:////SOMECORP/Corp/conda/channels/
. Funciona un encanto.
Puedes usar un canal personalizado conda como tu repositorio privado. Los pasos esenciales son usar "compilación conda" para crear un paquete conda, luego copiar ese paquete en su canal personalizado (un directorio) y ahora ejecutar el índice de conda en ese directorio. Luego puede instalar los paquetes desde este canal usando "conda install -c".
Un ejemplo, con más detalle, asumamos linux-64:
- Crea el canal:
mkdir -p /tmp/my-conda-channel/linux-64
Ahora asumiendo que tienes un proyecto llamado "abc" con un meta.yaml y build.sh con alguna versión X. Ahora lo construyes:
conda build abc
Esto construirá un archivo tar.bz2 en su directorio conda-bld. Por ejemplo: ~ / miniconda3 / conda-bld / linux-64 / abc-X-py35_0.tar.bz2. Copia ese archivo a tu canal:
cp ~/miniconda3/conda-bld/linux-64/abc-X-py35_0.tar.bz2 /tmp/my-conda-channel/linux-64/
Ahora indexalo:
conda index /tmp/my-conda-channel/linux-64/
Ya has subido ese paquete a tu canal personalizado. Puedes instalarlo en cualquiera de tus entornos conda haciendo lo siguiente:
conda install -c file://tmp/my-conda-channel/ abc=X
Recuerde, la X es la versión, de modo que, una vez que haya colocado más versiones en su canal, puede instalar versiones específicas.
Si tiene un proyecto que depende de la versión X de "abc", simplemente lo agregamos a ese proyecto meta.yaml. Ejemplo:
package:
name: some-other-project
version: 0.1
requirements:
build:
- abc X
...
Una vez que haya creado este canal, probablemente sea una buena idea agregarlo a su archivo .condarc para que se busque automáticamente. Por ejemplo:
channels:
- file://tmp/my-conda-channel/
- defaults