Forum >> Principianti >> file __init__.py

Pagina: 1

Salve a tutti,

nel caso in cui ho una libreria su cui si baserà l'intero pacchetto (nel mio casu numpy), mi basterà inserire import numpy as np nel file __init__.py nel pacchetto radice? spiegandomi meglio, nel caso qui sotto (trovato online) mi basterebbe importare numpy solo nell'init di progetto o dovrei importarlo anche in quello di gui e test?

scrivendo : import progetto.gui as gui

numpy sarà importato? grazie a tutti ;)


|- progetto/
|- __init__.py
|- core.py
|- utils.py
|- gui/
| |- __init__.py
| |- widgets.py
| |- windows.py
|- test/
| |- __init__.py
| |- test_core.py
| |- test_utils.py
| |- test_widgets.py
| |- test_windows.py
Lascia perdere, importa numpy in ogni singolo modulo dove hai bisogno di numpy: è più chiaro e leggibile e non sprechi nulla perché python tiene conto di eventuali import doppi. Tra l'altro i file __init__ non sono neanche più necessari per determinare un package...
https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
ottimo allora importerò direttamente nel modulo ;)




non servono più? a questo punto chiedo se potete illustrarmi la metodologia ad ora più corretta per strutturare un package... avendo svariati file faccio fatica a gestirli se non in un package... io per il momento utilizzavo dei file init vuoti


No, non servono più: vedi https://www.python.org/dev/peps/pep-0420/

Dopo di che, puoi sempre usarli se vuoi: per esempio proprio per importare automaticamente dei moduli, o comunque per eseguire del codice "preparatorio" a import time. Cosa che in genere è una tecnica quanto meno sospetta, ma insomma, occasionalmente torna utile.


Detto questo non so, per esempio https://realpython.com/python-modules-packages

https://leanpub.com/capirewxpython: Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com: Python in Windows, il mio blog e le mie guide
Grazie mille molto chiaro :)


Pagina: 1



Esegui il login per scrivere una risposta.