Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Débuguer une lib avec des imports relatifs

0 votes

J'ai codé une lib et j'ai voulu la rendre installable avec un setup.py. J'ai suivi l'article du blog ici: http://sametmax.com/creer-un-setup-py-et-mettre-sa-bibliotheque-python-en-ligne-sur-pypi/

Tout s'est bien passé et la lib s'installe parfaitement.

Mais dans la bataille, j'ai dû changer les import de mes fichiers. Avant, comme ma lib ne contenait pas de package, mes imports ressemblaient par exemple à ça:

from scipy.optimize import fsolve
from typing import Tuple, Union
import warnings

# Modules perso
import constants as cst
from exceptions import *
from object import ObjectCAD

Mais pour rendre ma lib installable, je dois maintenant faire:

from scipy.optimize import fsolve
from typing import Tuple, Union
import warnings

from . import constants as cst
from .exceptions import *
from .object import ObjectCAD

Le problème, c'est que je développe toujours cette lib. Quand je me place dans le dossier des modules et que je tente d'en lancer un, j'obtiens ça:

Traceback (most recent call last):
  File "reactor.py", line 13, in <module>
    from . import constants as cst
ImportError: cannot import name 'constants'

Je me vois mal changer tous mes imports à chaque fois que je veux travailler sur ma lib. Est-ce que vous avez déjà été dans ce cas-là ? Comment résoudre ce problème ?

Merci

EDIT:

En fait je ne comprends pas pourquoi j'obtiens une ImportError. Lancer python dans un shell dans le même dossier et lancer

 from . import constants as cst

marche très bien

demandé 12-Avr par Rififi (508 points)
edité 12-Avr par Rififi

2 Réponses

0 votes

Si tu te mets en mode développement :

python -m pip install -e .

Est-ce que ça corrige ton problème ?

répondu 13-Avr par Tiger-222 (780 points)
edité 18-Mai par Tiger-222
0 votes

Ne change pas tes imports.
A la place, installe ta lib en mode développement

python setup.py develop

ou avec pip en mode editable

pip install --editable

A partir de là, ta lib est installée mais les modif sur les sources restent visibles.

répondu 13-Avr par bubulle (2,112 points)
...