• [^] # Re: supposons que .

    Posté par (site web personnel) . En réponse au message python , fichier __init__py & virtualenv .. Évalué à 1.

    Si tu es un novice en programmation tout court, je te conseillerai dans un premier de ne pas chercher à découper ton code en plusieurs fichiers, et plutôt à comprendre les notions fondamentales (variables, types, structures de contrôle, classes, fonctions ...), quitte à d'abord tout mettre dans un seul fichier. De toutes les façons tes premiers programmes seront très simples, et tu ne vas pas te lancer dans quelques chose de trop ambitieux sans avoir bien compris les bases.

    Mais bon revenons à ta question, qui nécessite quelques explications préliminaires:

    Lorsque tu fais import foo, 'foo' doit être :

    1. à l'endroit où sont présents les libs Python de ton système.
    2. dans le même module que ton fichier courant.

    Pour connaître les chemins où va chercher python tu peux faire dans une console python:

    import sys
    sys.path

    En fait le problème du point 2, c'est qu'un de tes propres fichiers peut masquer un module standard (ex: tu crées un fichier 'math.py'). C'est pourquoi à partir de Python3, la façon 2 disparaît, et tu peux du coup faire :

    from math import cos # la c'est la lib standard
    from .math import ta_fonction_a_toi # ton propre math.py

    Note que tu peux utiliser ce comportement en Python2 en mettant from __future__ import absolute_import au début de tes fichiers.

    Attention si tu veux utiliser des imports relatifs ('from .math import ') tu devras lancer ton script avec l'option '-m' (et sans le '.py') pour le considérer comme un module.

    Du coup pour ta question, et ben soit :

    • tu mets complement/ dans le même module.
    • tu le mets avec les libs installées classiquement (genre dans ton virtualenv histoire de pas péter ton système).
    • tu modifies l'environnement Python (ce que fait virtualenv au final), genre comme ça.