2017-08-15 1 views
0

J'ai ajouté un sous-module git dans mon projet. Maintenant, toutes les importations dans ce sous-module sont cassées parce que je dois utiliser le chemin complet de l'importation. Par exemple, si la structure est comme ceci:python important des paquets de niveau 2

Myproject:
- submodule_project:
- package1:
--- code1.py
- package2:
--- code2.py

Maintenant, dans code1.py, il y a from package2 import code2. Il me dit que package2 est une référence non résolue. Il est seulement résolu si je le change en from submodule_project.package2 import code2.
Je ne veux pas cela parce que je ne veux rien changer dans le sous-module. Je l'ai juste ajouté pour utiliser certains de ses paquets dans mon projet et pour être régulièrement mis à jour chaque fois que ses développeurs le mettent à jour.

Répondre

0

Si vous souhaitez que package2 soit un package importable de niveau supérieur, son répertoire parent (submodule_project dans votre cas) doit être dans sys.path. Il existe plusieurs façons de le faire: sys.path.append(), sys.path.insert(), PYTHONPATH variable d'environnement.

Ou peut-être que vous ne voulez pas avoir le code sous-module du tout. Cela n'a pas de sens d'avoir un sous-module si le code du sous-module utilise l'import absolu au lieu du relatif (from ..package2 import code2). Peut être le paquet doit être installé dans site-packages (global ou dans un environnement virtuel) mais pas attaché au projet en tant que sous-module.