Bonjour à tous.

Je me lance dans la distribution de l'un de mes codes sous la forme d'un package donc.

Pour l'instant démarrons comme suit :
PkgTest
..|_setup.py
..|_pkgtest
......|_ __init__.py (fichier vide)
......|_foo.py

foo.py contient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
def test():
    print("Test")
et setup.py :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
from setuptools import setup
 
setup(name='pkgtest',
      packages=['pkgtest'],
      )
J'installe ce package avec pip, je lance python puis tape ceci dans ma console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
from pkgtest import foo
foo.test()
from pkgtest.foo import test
test()
et là tout est OK.

Maintenant je rajoute un peu de structure dans mes fichiers :
PkgTest
..|_setup.py
..|_pkgtest
.......|_ __init__.py
.......|_examples (un dossier vide pour l'instant)
.......|_src
............|_ __init__.py (fichier vide)
............|_foo.py

foo.py est inchangé et setup.py devient :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
from setuptools import setup
 
setup(name='pkgtest',
      packages=['pkgtest'],
      package_dir={'pkgtest': 'pkgtest/src'},
      )
et dans le __init__.py que j'ai rajouté, je mets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from pkgtest.src import foo
Là,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from pkgtest import foo
fonctionne, mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from pkgtest.foo import test
ne fonctionne pas ....
Bon si j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
from pkgtest.src.foo import test
ça fonctionne mais le but est de pouvoir s'affranchir d'écrire le "src" pour mes utilisateurs.

Merci de votre aide.