es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

conda build: ¿Cómo construir “pkg” como “lib.pkg”?

En mi computadora tengo lib en PYTHONPATH:

lib
|__pkgA
|__pkgB

Cada paquete tiene su propio repositorio de git.

Estoy tratando de construir un paquete conda desde pkgA utilizando git como fuente (a través de conda-build y meta.yaml), pero quiero que el paquete se instale como lib.pkgA y NO como pkgA.

¿Cómo puedo lograr esto? Lo siguiente no reconoce lib como un módulo:

meta.yaml

package:
    name: lib.pkgA
    version: {{ GIT_DESCRIBETAG  }}

source:
    git_url: git@github.com:lib/pkgA.git

build:
    noarch: python

requirements:
    build:
        - python >=3.6
    run:
        - python >=3.6

test:
    imports:
        - lib.pkgA

about:
    home: https://github.com/lib/pkgA

P.S. – Intenté crear un metapaquete implícito de la siguiente manera:

package: lib
...
outputs:
    - name: pkgA

pero parecía estar buscando el módulo lib de todos modos y falló. Debería haber una manera de evitar la estructura de directorios lib/pkgA/lib/pkgA poco elegante…

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la instalación del paquete deseado como lib.pkgA en lugar de pkgA, puedes agregar las siguientes líneas a tu archivo meta.yaml:

    build:
      script: |
        mv $SRC_DIR $SRC_DIR/../lib.pkgA
    

    Este script renombra la carpeta pkgA a lib.pkgA antes de que comience el proceso de compilación, cambiando efectivamente la ubicación de instalación del paquete.

    Tu archivo meta.yaml actualizado luciría así:

    package:
        name: lib.pkgA
        version: {{ GIT_DESCRIBE_TAG  }}
    
    source:
        git_url: git@github.com:lib/pkgA.git
    
    build:
        noarch: python
        script: |
            mv $SRC_DIR $SRC_DIR/../lib.pkgA
    
    requirements:
        build:
            - python >=3.6
        run:
            - python >=3.6
    
    test:
        imports:
            - lib.pkgA
    
    about:
        home: https://github.com/lib/pkgA
    

    Con esta modificación, al ejecutar conda build . desde la carpeta que contiene meta.yaml, se creará un paquete lib.pkgA que se puede instalar con conda install -c <channel> lib.pkgA.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta.

Comments are closed.