2017-04-17 2 views
0

Je buily un paquet avec une structure de dossiers comme ce qui suit:Python: Que mettre dans les fichiers __init__.py si j'utilise plusieurs sous-paquets?

MyPackage 
| 
├──mypackage 
|  | 
|  ├── __init__.py 
|  | 
|  ├── config.py 
|  | 
|  ├── data_clean 
|  | ├── __init__.py 
|  | └── f1.py 
|  | 
|  ├── data_transform 
|  | ├── __init__.py 
|  | └── g1.py 
|  | 
|  └── stat_calc 
|   ├── __init__.py 
|   ├── s1.py 
|   └── command_line_interface.py # <- users will use this from cmd.exe 
| 
├── README.txt  
| 
└── setup.py 

Tous les 4 __init__.py fichiers sont vides. A l'origine, quand je voulais s1.py utiliser une fonction dans g1.py, je ferais

import mypackage.data_transform.g1 

puis quelque part sur la ligne que je ferais

mypackage.data_transform.g1.my_func() 

Ensuite, pour sauver, l'espace que je change tous les importations à ressembler

from mypackage.data_transform.g1 import my_func 

puis j'utiliserais my_func quelque part. Cette nouvelle syntaxe obtient beaucoup d'erreurs, je ne suis pas sûr de ce que je devrais faire ou si/ce que je devrais mettre des choses dans les fichiers __init__.py.

Répondre

0

En python 3.3+, les fichiers __init__.py ne sont pas nécessaires. Après avoir supprimé tous les fichiers __init__.py de mon script, tout fonctionnait bien avec juste:

from mypackage.data_transform.g1 import my_func