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 :

Que faire pour ajouter un module perso accessible depuis Python ?


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut Que faire pour ajouter un module perso accessible depuis Python ?
    Bonjour,
    je voudrais ajouter un module perso au dossier standard de Python et accessible comme une bibliothèque standard. Que faut-il faire ?

  2. #2
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Pour ajouter un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path.append(dossier)
    __import__(nom_du_module)   # Ne pas mettre l'extension dans le nom du module
    Ainsi, pour importer tous les fichiers d'un dossier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path.append(dossier)
    for mod in listdir(dossier):__import__(splitext(mod)[0])   # splitext sépare le nom du fichier de son extension
    J'espère que ça pourra vous aider.

    Cordialement.

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Sur linux le placer dans:
    /usr/lib/pythonx.y/dist_packages/

  4. #4
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Merci pour les réponses.

    Citation Envoyé par Zavonen Voir le message
    Sur linux le placer dans:
    /usr/lib/pythonx.y/dist_packages/
    C'est plus ce genre de choses qui m'intéresse. Il suffit juste de placer au bon endroit et c'est tout... Bien entendu, je pose une question.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 388
    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 388
    Points : 36 938
    Points
    36 938
    Par défaut
    Citation Envoyé par rambc Voir le message
    C'est plus ce genre de choses qui m'intéresse. Il suffit juste de placer au bon endroit et c'est tout... Bien entendu, je pose une question.
    Comme le 'bon endroit' est à géométrie variable... pourquoi ne pas prendre le temps de mettre en forme cela pour qu'il soit installé par distutils/easyinstall/...

    Tu dois même avoir des trucs comme paster qui créent une arborescence avec tout ce qu'il faut dedans et tu ajoutes tes trucs dedans après.
    genre:
    paster create -t basic_template

    - W

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Sous Windows, si c'est un seul module, je le mets habituellement dans C:\PythonXY\Lib\site-packages\.

    Si c'est un package (ou un dossier qui contient des modules/packages), je préfère habituellement modifier le search path de Python, en créant dans site-packages un fichier .PTH qui est un fichier texte contenant le(s) chemin(s) du ou des dossier(s) à ajouter au search path).

  7. #7
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Bonjour.

    Citation Envoyé par wiztricks Voir le message
    Comme le 'bon endroit' est à géométrie variable...
    Pour ma question en fait non car la manipulation se fera sur un post sépicifique dont l'image sera dupliquée sur d'autres postes.

    Citation Envoyé par wiztricks Voir le message
    pourquoi ne pas prendre le temps de mettre en forme cela pour qu'il soit installé par distutils/easyinstall/...
    Tu penses à ce genre de chose : http://diveintopython3.org/packaging.html .

  8. #8
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour,

    En fait pour ce qui est des imports je crois que sur tous les OS tu as "sys.path" qui contient la liste de tous les dossiers d import ainsi si les modules sont deja dans un dossier tu as juste a ajouter le chemin absolu de ce dossier dans "sys.path"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import sys
    sys.path.append(mon_chemin_absolu)
    et des lors tu peux importer tous les modules dans le dossier "mon_chemin_absolu" par contre si tu veux importer un dossier tout entier, le dossier doit contenir un fichier nomme "__init__.py" pour initialiser le package ou un truc dans le genre.

    @+ et bon code

  9. #9
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Citation Envoyé par afranck64 Voir le message
    ...si les modules sont deja dans un dossier tu as juste a ajouter le chemin absolu de ce dossier dans "sys.path"
    Merci, je connais déjà cela. En fait, l'idée est d'avoir un module directement appelable comme on le fait avec import matplotlib par exemple.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 388
    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 388
    Points : 36 938
    Points
    36 938
    Par défaut
    Citation Envoyé par rambc Voir le message
    Tu penses à ce genre de chose : http://diveintopython3.org/packaging.html .
    Oui pour ce qui est de la mécanique utilisée: on fabrique un package "distribuable" via distutils/easy_install...

    Mais plutôt que de passer du temps à comprendre et construire arborescence et l'ensemble des fichiers nécessaires pour faire un truc qui marche, on utilise le template basic_template de paster.

    Puis:
    - on pose son code dans le répertoire qui va bien.
    - python setup.py XXXX pour construire le package
    - easy_install/pip du package pour qu'il se pose "au bon endroit"

    Certes on peut poser le truc à la main dans site-specific... mais vu de toutes les fonctionnalités dont on va disposer pour un investissement en temps de mise en œuvre plus que raisonnable, dommage de poser son truc au burin.
    - W

  11. #11
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    wiztricks, tu as trop de connaissances pour moi et du coup j'ai du mal à te suivre...

    Citation Envoyé par wiztricks Voir le message
    Mais plutôt que de passer du temps à comprendre et construire arborescence et l'ensemble des fichiers nécessaires pour faire un truc qui marche, on utilise le template basic_template de paster.
    Vite fait, quézako ? Ensuite je "googeliserait" pour des compléments.

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 388
    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 388
    Points : 36 938
    Points
    36 938
    Par défaut
    Citation Envoyé par rambc Voir le message
    Vite fait, quézako ? Ensuite je "googeliserait" pour des compléments.
    paster est le nom d'une suite d'utilitaires développés par Ian Bicking. Il est assez branché sur l'automatisation d'un certain nombre de taches répétitives autour du déploiement et de la gestion de packages et autres composants.

    Si on veut s'amuser à construire avec Python des machins qui dépassent quelques poignées de scripts rangés dans leur hiérarchie de modules, il faut aller vers des plugins/DLL et des composants reliés avec des interfaces plus souples.
    Zope est un exemple de réponse/solution à cela.
    Je la qualifierait de "moderne" au sens ou c'est comme cela qu'on pensait devoir faire les choses au siècle dernier.

    L'approche de Ian B. étant plutôt de réaliser tout ou partie de cela en étendant par l'extension de fonctionnalités existantes plutôt que par une reconstruction du monde.

    Elle s'appuie sur des principes architecturaux style DRY et CoC qui ont été poussé par Ruby et Ruby On Rails.

    Tout çà pour dire qu'en soulevant le tapis de "paster", tu découvriras peut être un monde intéressant mais plutôt déconcertant....
    Mais pour éviter de s'y disperser et garder le focus sur ta préoccupation, lire la présentation de E.Zadié là dessus.

    - W

  13. #13
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Merci, "yapluka".

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2007, 09h23
  2. Comment faire pour ajouter une ligne seulement !
    Par Fredri dans le forum Access
    Réponses: 1
    Dernier message: 26/12/2005, 11h44
  3. [conseils]Que faire pour m'entraîner?
    Par nicolaskarp dans le forum Général Java
    Réponses: 8
    Dernier message: 20/07/2005, 23h36
  4. [DirectDraw] Que faire pour optimiser le rendu ???
    Par mat.M dans le forum DirectX
    Réponses: 8
    Dernier message: 12/12/2003, 18h02

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