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.

El paquete de Pypi no se está instalando.

Estoy trabajando en publicar una librería de utilidades para Python, principalmente para mi uso personal. Puedes encontrarla en pypi aquí. El repositorio está aquí. Aquí está mi setup.cfg:

[metadata]
name = raddoo
version = 0.0.4
description = "Una colección de funciones de utilidad útiles para Python"

[options]
packages = raddoo
python_version = >=3.6

Estoy construyendo con python -m build, lo cual me da un archivo tar.gz y whl. Cuando hago pipenv install raddoo en otra ubicación, parece que no se instala nada en site-packages:

ls $(pipenv --venv)/lib/python3.9/site-packages
_distutils_hack              pip-21.3.1.virtualenv        setuptools-58.5.3.virtualenv
_virtualenv.pth              pkg_resources                wheel
_virtualenv.py               raddoo                       wheel-0.37.0.dist-info
distutils-precedence.pth     raddoo-0.0.4.dist-info       wheel-0.37.0.virtualenv
pip                          setuptools
pip-21.3.1.dist-info         setuptools-58.5.3.dist-info

Intentar importarlo también falla:

python -c 'import raddoo'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'raddoo'

¿Qué estoy haciendo mal?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el campo packages en tu archivo setup.cfg no está configurado correctamente. Actualmente, está establecido en raddoo, lo que significa que solo se incluirá el módulo de nivel superior raddoo en el paquete. Sin embargo, mencionaste que tienes una colección de funciones de utilidad, por lo que es probable que estén organizadas en submódulos o subpaquetes.

    Puedes intentar modificar el campo packages para incluir todos los submódulos y subpaquetes bajo el paquete raddoo, de esta manera:

    [options]
    packages = find:
    python_version = >=3.6
    

    Esto utiliza el valor find: para incluir automáticamente todos los paquetes encontrados en el directorio fuente. También puedes especificar nombres de paquetes específicos o patrones utilizando una sintaxis de lista, como [raddoo, raddoo.utils].

    Después de actualizar setup.cfg, deberás reconstruir y reinstalar el paquete usando python -m build y pip install <ruta-al-archivo-whl>. Una vez instalado, puedes verificar que los módulos del paquete estén incluidos en site-packages y que puedan importarse correctamente en tu sesión de Python.

    import raddoo.utils
    

    Esto debería funcionar siempre que el módulo haya sido estructurado correctamente.

Comments are closed.