IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

�crire un fichier __init__.py


Sujet :

Python

  1. #1
    Membre �prouv�
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par d�faut �crire un fichier __init__.py
    Salut les pythons,
    apr�s presque 4 ans de python je suis tomber sur un os:
    �crire un fichier __init__.py pour un module ou package car il y a eu une erreur de jugement ma part et je n'ai jamais vue un auteur aborder le sujet dans un de mes bouquins.
    car je pensais que ces fichiers �t� toujours vide symbolisant une sorte de balisage.
    Puis j'ai attaquer le packaging (d'un de mes modules) et je me suis int�resser a distutils, a cet effet, et boom j'ai appris que ces fichiers ne sont nullement vierge mais servent, d'apr�s ce que je sais a ce sujet pour l'instant, au packaging de fichier de code source de modules, notamment pour les directives d'import d'objet sous la forme:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    from mon_module import ma_classe
    le seule truc que je sais et qui reste a pr�ciser et que pour la formule d'import �noncer pr�c�demment: ont peut �crire dans le fichier __init__.py correspondant :
    mais j'ai regarder quelques fichiers __init__.py et �a n'a pas l'air facile.

    Alors si vous voulez bien m'�clairer sur cette terre inconnus de mon �tre je serai ravis d'apprendre de part vos lumi�res:

    -Que mettre dans un fichier __init__.py (code python) et comment �a marche (m�canisme sous-jacent) ?

    Si vous avez l'esprit didactique vous pouvez, si vous le d�sirez bien, me faire un petit topo sinon toute information sous forme de lien, code, truc et astuces a conna�tre sont la bienvenue.

    Merci pour vos r�ponses �clairant mon ignorance.

  2. #2
    Expert confirm�

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Expert Python
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par d�faut
    Bonjour Luke,

    Alors effectivement, quel que soit le livre (le mien y compris je crois), on indique que ce fichier est vide, pour simplifier les choses.*

    Dans les faits, lorsqu'on importe un package contenant plusieurs module et/ou sous package, c'est systematiquement le code contenu dans ce fichier qui est ex�cut�.

    Aussi il est important de bien le renseigner. Le plus simple est de faire un import de chacun de tes modules et sous-package. dans le __ini__ p�re. Si tu fais abstrction d'un seul de ces modules/packages, tu ne pourras pas y acc�der.

    Il est dans ce cas aussi extremement important de bien documenter les docstrings qui permettront d'obtenir de l'aide sur l'utilisation des diverses classes et fonctions.

    Je me suis toujours limit� � cela, et cela m'a toujours suffit jusqu'� pr�sent. Il existe probablement d'autre fa�on de faire (notamment avec ton __all__) mais je ne peux te renseigner � ce sujet.

    J'esp�re avoir �t� assez clair. SInon n'hesite pas a demander plus d'infos.

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, r�seau, syst�me et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Technicien Help Desk, maintenance, r�seau, syst�me et +
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par d�faut
    Bonjour Luke,

    Pour ce qui est du contenu d'un __init__.py tu peux par exemple y mettre un __version__, des imports d�pendants ou encore __path__ pour les packages avec de multiples sous r�pertoires. etc...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    __version__ = "0.1"
    import sys
    if sys.platform == 'linux':
    	blablabla
    Pour ce qui est de __all__ c'est la liste des noms importables. Si __all__ est d�fini dans l'__init__.py de m comme __all__ = ["m1", "m2"] un from m import m3 ne fonctionneras pas.
    Un from m import * (non recommand�) importeras m1 et m2, m�me si nous avons m3, m4, m5...
    Suivant le contenu d'un module l�absence d'un __all__ explicite peux amener au fait qu'une partie ne soit pas importable.

    @+

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 772
    Par d�faut
    Salut,
    Citation Envoy� par Luke spywoker Voir le message
    �crire un fichier __init__.py pour un module ou package car il y a eu une erreur de jugement ma part et je n'ai jamais vue un auteur aborder le sujet dans un de mes bouquins.
    Les bouquins d'initiation permettent d�acqu�rir le b.a.ba qui vous permettra d��tre plus confortable avec la lecture de la documentation officielle et des codes/applications �crites par d'autres ou les sources de Python. Ce b.a.ba est comparable a la ma�trise de la langue fran�aise lorsqu'on entre au coll�ge. On sait des choses pour avancer, approfondir... mais rien de ce que nous devrions savoir pour �crire un roman.

    Dans la documentation officielle, vous y trouvez un vrai tuto. qui s'adresse a ceux qui savent d�j� programmer dans un autre langage.
    __init__.py, __all__, packages y sont pr�sentes ici.
    Dans la documentation Python, __init__.py est couvert bri�vement dans le chapitre sur les import.
    Mais c'est une documentation technique et donc bien plus ardue qu'un tuto.
    C'est assez bref mais "suffisant":
    Python defines two types of packages, regular packages and namespace packages. Regular packages are traditional packages as they existed in Python 3.2 and earlier. A regular package is typically implemented as a directory containing an __init__.py file. When a regular package is imported, this __init__.py file is implicitly executed, and the objects it defines are bound to names in the package�s namespace. The __init__.py file can contain the same Python code that any other module can contain, and Python will add some additional attributes to the module when it is imported.
    Que mettre dans un __init__.py? Ce script n'est ex�cute qu'au premier import d'un package.
    Il sert a construire l'espace de nom du package, i.e. attributs et objets associes.
    Vous avez des tas de cas d'utilisation dans le "/Lib" de Python:
    • tkinter: __init__.py contient tout le package,
    • logging: un singleton,
    • ...

    Comme c'est de la "programmation", la seule limite est votre imagination (et la revue de code si c'est dans le cadre d'un projet "a plusieurs").
    Si vous voulez un truc qui d�coiffe, allez voir �tudier l'__init__ de werkzeug.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. �crire un fichier xml et ajout
    Par robert_trudel dans le forum XML/XSL et SOAP
    R�ponses: 3
    Dernier message: 09/06/2006, 14h23
  2. lire/�crire un fichier stock� dans le JAR ?
    Par SheikYerbouti dans le forum Entr�e/Sortie
    R�ponses: 11
    Dernier message: 24/03/2006, 10h37
  3. R�ponses: 9
    Dernier message: 05/04/2005, 09h39
  4. Comment �crire un fichier texte au format MS-DOS ?
    Par fredfred dans le forum Langage
    R�ponses: 9
    Dernier message: 20/01/2005, 09h00
  5. [DOM] Meilleure fac�on de lire et d'�crire un fichier XML
    Par newfsch dans le forum Format d'�change (XML, JSON...)
    R�ponses: 8
    Dernier message: 12/05/2004, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo