2017-09-14 3 views
-1

J'ai structure du projet comme celui-ci:Comment avoir un projet python multi-répertoire ou multi-paquet?

package1/__init__.py 
package1/file1.py 
package1/file2.py 

package2/__init__.py 
package2/file1.py 
package2/file2.py 

__init__.py 
script1.py 
script2.py 

Malheureusement, je trouve que je peux exécuter du code uniquement à partir du répertoire racine, par exemple, à partir script1.py. Si je cours à partir de pakage2/file2.py, tous les liens entre les fichiers sont perdus, c'est-à-dire que toutes les importations de package1 de package2 deviennent introuvables.

Quelle est la structure de répertoire correcte dans Python, qui contraint la structure du paquet sur tous les répertoires?

Répondre

0

Vous avez besoin soit à la fois package1 et package2 être à l'intérieur d'un paquet, auquel cas ils peuvent à la fois l'importation de l'autre:

root_package/ 
    __init__.py 
    package1/ 
    package2/ 

Ou ajoutez les paquets à votre PYTHONPATH, dans ce cas, tout script python votre système peut importer d'eux:

export PYTHONPATH="$PYTHONPATH:/path/to/package1:/path/to/package2" 

Mise à jour: vous ne pouvez pas importer dans le cadre d'un package si vous exécutez les scripts directement. Ce que vous devez faire est de définir des classes et des fonctions dans vos packages comme vous le souhaitez, puis les importer à partir d'un autre script:

script.py.

from package1 import ... 
from package2 import ... 
+0

Désolé, bien sûr, j'ai '__init __ fichier py' dans répertoire racine aussi, j'ai corrigé la question – Dims

+0

En tout cas, cela n'aide pas – Dims

+0

Par "un autre script" vous voulez dire "script dans le répertoire racine, mais pas dans les sous-répertoires"? – Dims