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 :

Déclarer le chemin d'un module


Sujet :

Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Déclarer le chemin d'un module
    Bonjour,

    Quelqu'un (sans trop me taper dessus ^^), pourrait-il me redire comment déclarer l'adresse d'un dossier dans lequel IDLE doit chercher un module .py afin de satisfaire un import.

    J'ai besoin de faire ceci car je viens d'installer Jython et IDLE ne sait pas trouver les modules nécessaires pour faire fonctionner les exemples fournis.

    D'avance merci et désolé pour cette question un peu "naze"... C'est la fin d'année.

    Bon fêtes à tous
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Regarde du côté de sys.path.

    sys.path.append(chemin) devrait ajouter le chemin aux répertoires de recherche des modules.

    J'ai déjà utilisé cela dans un script cgi avec sys.path.append('./').

    Et bonne fête aussi!

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2003
    Messages : 127
    Points : 149
    Points
    149
    Par défaut
    Sinon tu peux aussi fixer les modules utilisé en modifiant la variable d'environnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=$PYTHONPATH:/path_other/module1
    à rajouter dans ~/.bashrc par exemple

  4. #4
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Tyrus Voir le message
    Sinon tu peux aussi fixer les modules utilisé en modifiant la variable d'environnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export PYTHONPATH=$PYTHONPATH:/path_other/module1
    à rajouter dans ~/.bashrc par exemple
    Que ce genre de commande est belle... Ahhh dommage que je sois sous windows.
    Personne n'aurait l'équivalence à tout hazard
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  5. #5
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir Jiyuu,

    Méthode os.system : path %path%; cheminarejouter

    Méthode Python : _winreg.CreateKey. Regarde dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

    Méthode 3 ? (reg /? + os.system ?)

    Bon courage (pas de Windows pour tester cela @ home).

    @+

    Edit : Pour la méthode os.system il me semble que c'est juste pour l'exécution du script.
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    Que ce genre de commande est belle... Ahhh dommage que je sois sous windows.
    Personne n'aurait l'équivalence à tout hazard
    Clic-droit sur le poste de travail, "Propriétés" (ou la combo magique "touche Windows + touche Pause")
    Onglet "Avancé"
    Bouton "Variables d'environnement"
    Dans la partie du haut "Variables utilisateurs pour xxx", bouton "Nouveau"
    le reste coule de source.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 149
    Points : 219
    Points
    219
    Par défaut
    La commande python officielle est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import sys; sys.path.insert(0,'votre dossier')

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    Je suis toujours étonné de voir l'utilisation de sys.path pour rajouter le chemin d'un module à importer.

    Le seul cas où cela s'impose est quand un module qui porte le même nom se trouve dans le répertoire courant car, pour construire la valeur de sys.path, Python concatène, dans l'ordre, les éléments suivants :

    1. le répertoire courant du script, ou celui de la session interactive ;
    2. les répertoires indiqués dans la variable d'environnement PYTHONPATH ;
    3. les répertoires de la bibliothèque standard ;
    4. le contenu de tout fichier .pth trouvé lors d'une des étapes précédentes.

    Vu que sys.path est construit à chaque "démarrage" de Python, je trouve + pérenne de positionner la variable d'environnement et d'éviter de coder en dur le chemin d'un module.

    6.1.2. The Module Search Path¶

    When a module named spam is imported, the interpreter searches for a file named spam.py in the current directory, and then in the list of directories specified by the environment variable PYTHONPATH. This has the same syntax as the shell variable PATH, that is, a list of directory names. When PYTHONPATH is not set, or when the file is not found there, the search continues in an installation-dependent default path; on Unix, this is usually .:/usr/local/lib/python.

    Actually, modules are searched in the list of directories given by the variable sys.path which is initialized from the directory containing the input script (or the current directory), PYTHONPATH and the installation- dependent default. This allows Python programs that know what they’re doing to modify or replace the module search path. Note that because the directory containing the script being run is on the search path, it is important that the script not have the same name as a standard module, or Python will attempt to load the script as a module when that module is imported. This will generally be an error. See section Standard Modules for more information.
    C'est pas qu'j'ai pas confiance en moi, mais sur ce coup là, si.

    En même temps, si l'on veut modifier le sys.path "incognito", on peut effectivement le faire au sein d'un script (ajout du chemin, import du module puis suppression du chemin).

    Vu que je suis fainéant et que j'ai pas envie de m'arracher les cheveux en cas de problème avant de penser à regarder sys.path et ses éventuelles modifications dans le code, je préfère me cantonner à la variable PYTHONPATH et aussi à conseiller cette méthode.

Discussions similaires

  1. Connaitre le chemin d'un module depuis un autre
    Par Aure7780 dans le forum Maven
    Réponses: 2
    Dernier message: 02/05/2012, 13h35
  2. Déclarer les chemins
    Par runcafre91 dans le forum Langage
    Réponses: 4
    Dernier message: 22/02/2010, 16h25
  3. Réponses: 18
    Dernier message: 15/06/2009, 17h14
  4. Connaitre le chemin d'un module
    Par méphistopheles dans le forum Général Python
    Réponses: 6
    Dernier message: 06/02/2009, 14h36
  5. indiquer le chemin d'un module
    Par Quartus dans le forum Général Python
    Réponses: 7
    Dernier message: 01/04/2007, 22h39

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