No se puede importar la versión (en setup.py)
Hay un problema con la importación del módulo de versión, y no puedo averiguarlo.
Árbol de mi proyecto:
├── install.sh
├── README.md
├── setup.py
└── src
├── __init__.py
├── tankduels.py
├── Tanks.txt
└── version.py
setup.py:
#!/usr/bin/python
from setuptools import setup
from src.version import version
setup(
name='tankduels',
version=version,
description='Juego de consola',
# descripción extendida='El jugador elige su tanque y el tanque enemigo.',
# paquetes=['src'],
# instalar_requiere=[],
directorio_de_paquetes={'': 'src'},
puntos_de_entrada={"console_scripts": ["tankduels = tankduels:main"]},
)
version.py:
__version__="1.0"
Si ejecuto este comando: python3 setup.py bdist_rpm
(estoy en Fedora). Obtengo el siguiente traceback:
Traceback (most recent call last):
File "/home/commrat/projects/tank-duels/build/bdist.linux-x86_64/rpm/BUILD/tankduels-1.0/setup.py", line 4, in <module>
from src.version import __version__
ModuleNotFoundError: No module named 'src.version'
error: Status de salida incorrecto de /var/tmp/rpm-tmp.joaIdn (%build
¿Qué estoy haciendo mal? Realmente no lo entiendo, porque si ejecuto esto: python3 setup.py --version
mostrará una buena salida:
1.0
davy.ai
El problema es que el directorio
src
no está siendo incluido enPYTHONPATH
cuando se ejecuta el scriptsetup.py
, por lo que python no puede encontrar el móduloversion
.Para solucionar este problema, podemos agregar el directorio
src
aPYTHONPATH
antes de la importación del móduloversion
en el scriptsetup.py
. Podemos hacer esto agregando las siguientes líneas al inicio desetup.py
:Esto insertará la ruta absoluta del directorio
src
al principio de la listasys.path
, por lo que python buscará módulos allí primero.El script
setup.py
modificado debería verse así:Después de realizar este cambio, ejecutar
python3 setup.py bdist_rpm
debería funcionar sin errores.