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 :

probleme d'import de mes modules customs


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    chomeur
    Inscrit en
    Mai 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Mai 2022
    Messages : 88
    Par défaut probleme d'import de mes modules customs
    bonjour
    sur linux,dans mon dossier home, j'ai un dossier PRO/.
    dans ce dossier PRO, j'ai un dossier app/

    puis dans ce dossier app/, j'ai 2 sous dossiers:
    start/
    utils/

    dans utils, j'ai un fichier connect.py avec une fonction connect().
    dans start, j'ai script.py, c'est ce fichier que je veux lancer, ce fichier importe la fonction connect() depuis connect.py.

    dans script.py, j'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from .. utils.connect import connect
    quand je suis placé dans /home/PRO
    je lance me script avec;
    python3 app/start.script.py


    mais j'ai cette erreur
    ImportError: attempted relative import with no known parent package

    j'ai créé des fichiers __init__py dans les dossiers app, utils et start mais toujours cette erreur

    si je mets le chemin direct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from  app.utils.connect import connect
    j'ia cette erreur
    <module>
    from app.start.connect import connect
    ModuleNotFoundError: No module named 'app'


    si je mets ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from  utils.connect import connect
    j'ia cette erreur
    <module>
    from start.connect import connect
    ModuleNotFoundError: No module named 'start'


    comment je peux faire pour importer connect?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Normalement, si dans le répertoire app vous créez un script toto.py contenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from utils.connect import connect
    ça devrait fonctionner.
    Et si le script app/start/script.py contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from utils.connect import connect
    alors l'ajout dans toto.py de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from start import script
    devrait toujours fonctionner.
    Pour l'instant, on a fait que des imports "absolus".

    Pour les import relatifs (..) c'est plus compliqué puisqu'ils sont relatifs à l'emplacement du script principal qui sera "racine".
    => si script.py est script principal, from .. n'a pas de sens sauf à modifier sys.path de différentes façons (directement, via la variable PYTHONPATH ou via python -m). Mais ça veut dire ouvrir un tuto pour essayer de comprendre comment ça marche et que vous réfléchissiez un peu a ce que vous voulez (plutôt que de constater que ça ne marche pas).

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

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    bonjour

    Première question, pourquoi vouloir faire une arborescence non classique ? Tu recherches dès le départ les complications...
    Vouloir faire différemment des autres est un gage de
    Si j'ai 1 ou plusieurs fichiers exécutables dans ./PRO, ce sont alors des entrées (et ajouter un "start/truc") n'apporte strictement rien

    ou via python -m
    Oui, si cela répond à ta question, tu peux utiliser le combo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from utils.connect import connect
    python -m start.script  # depuis le dossier ./PRO
     
    python -m start  #peut être aussi valide si tu n'as qu'un seul point d'entrée (renomme script.py)
    Effectivement, il faut lire la doc pour comprendre (et si on ne comprend pas, alors on ne fait pas).

Discussions similaires

  1. [Python 3.X] Problème sur l'import de mes modules
    Par Thomas404 dans le forum Général Python
    Réponses: 7
    Dernier message: 21/11/2019, 14h00
  2. [Python 2.X] [Débutant] import de mes modules
    Par maniac37 dans le forum Général Python
    Réponses: 5
    Dernier message: 13/08/2015, 12h49
  3. probleme d'import de module avec openERP
    Par angelina88 dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 17/07/2012, 22h02
  4. Réponses: 2
    Dernier message: 06/09/2006, 22h04
  5. [Tomcat] [eclipse] probleme au lancement de mes jsp
    Par sandusa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/05/2004, 14h59

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