Import de variables ou fonctions d'un autre fichier

[Résolu/Fermé]
Signaler
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014
-
Messages postés
321
Date d'inscription
samedi 24 septembre 2011
Statut
Membre
Dernière intervention
22 janvier 2015
-
Bonjour,
je souhaite dans le cadre d'un projet en Python utiliser des variables qui sont situées dans des fichiers séparés. Mais je n'y arrive pas, j'ai lu au moins 5 forums, alors j'ai résumé mon problème dans 2 fichiers test assez courts pour les mettre ici :

#C'est le fichier "fichier1.py"
def add(a,b):
c=a+b
print(a,'+',b,'=',c)
m=10
n=3

#C'est le fichier "fichier2.py"
e=5
f=28
try:
from fichier1 import *
except:
print("Raté!")
add(e,f)
add(m,n)

Voilà, quand je compile le fichier2, il me dit en message d'erreur qu'il ne connaît pas add (après avoir affiché "Raté!")
Si je compile le fichier1 avant, dans le même shell, il réussit à compter add(e,f) et add(m,n) mais ce n'est pas ce que je veux, vous l'aviez compris.

Je précise que les fichiers "fichier1.py" et "fichier2.py" sont enregistrés dans le même dossier, et que j'ai fait l'indentation après les deux points, même si ça ne se voit pas ici.

Merci de votre aide

P.S. Au cas où, je suis sous Windows 7, j'utilise Pyzo :
IEP version: 3.5 (source)
Platform: win32
Python version: 3.4.1

et je travaille en binôme avec une personne sous Linux (sous Pyzo également, version antérieure, sous Python 3.3 je crois (mais Python 3 en tout cas)).

"Quand le sage montre la lune du doigt, l'imbécile regarde le doigt."
Proverbe chinois

6 réponses

Messages postés
321
Date d'inscription
samedi 24 septembre 2011
Statut
Membre
Dernière intervention
22 janvier 2015
63
Ça vient peut-être de ton IDE, tente avec IDLE ?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
321
Date d'inscription
samedi 24 septembre 2011
Statut
Membre
Dernière intervention
22 janvier 2015
63
D'ailleurs tente de faire :
import os
print(os.getcwd())

Pour voir dans quel dossier courant tu te situes
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Ah merci, effectivement, le dossier courant resteC:\Users\R,
que j'ouvre mon fichier a.py ou non !

Sinon oui je penser essayer IDLE pour d'éventuels problèmes liés à Pyzo
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

En mettant mon fichier à cet endroit, ça marche !!
Saurais-tu comment changer le dossier courant ? Merci
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Je n'ai toujours pas trouvé ; d'ailleurs je n'arrive pas non plus à importer des images, en chemin relatif ou en chemin absolu !!

Mais je préférerais le chemin relatif puisqu'on échange nos codes avec mon binôme.

Merci
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Je précise le message d'erreur (en enlevant le try/except) :

Traceback (most recent call last):
File "C:\Users\R\Documents\Python\Tests\fichier2.py", line 5, in <module>
from fichier1 import *
ImportError: No module named 'fichier1'
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Bonjour, quelqu'un sait-il comment changer le dossier courant, ce qui me permettrait de résoudre mon problème ?

Dossier courant que l'on lit avec (Merci Forceseek) :
import os
print(os.getcwd())

Dans ce dossier uniquement, le chemin relatif marche (mais ne marche plus dès que je remets un /, en effet il peut lire un fichier dans le dossier courant, mais pas dans un sous-dossier "expl", si je mets

from /expl/a
from expl/a
from expl\a
from \expl\a

rien ne marche). En gros je ne sais pas faire le chemin absolu non plus, mon collègue en Linux y arrive, mais en Windows ce sont des antéslash à la base, et Python le comprend autrement..

Merci !
"Quand le sage montre la lune du doigt, l'imbécile regarde le doigt."
Proverbe chinois
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Pour changer le dossier courant, il faut aller dans "File browser" en bas à droite de Pyzo, se positionner dans le dossier courant que l'on souhaite et appuyer sur l'étoile. Puis clic sur le curseur dans le bouton de l'étoile, et ajouter ce dossier au Path de Python \o/
J'ai enfin trouvé !!!

Sujet résolu.
Messages postés
321
Date d'inscription
samedi 24 septembre 2011
Statut
Membre
Dernière intervention
22 janvier 2015
63
Bien joué :)
Messages postés
321
Date d'inscription
samedi 24 septembre 2011
Statut
Membre
Dernière intervention
22 janvier 2015
63
Pour moi tout marche :
Le fichier a.py :
m=10
n=3
def add(a,b):
c=a+b
print(a,'+',b,'=',c)

Le fichier b.py
e=5
f=28
try:
from a import *
except:
print("Raté!")
add(e,f)
add(m,n)

Les deux fichiers doivent être dans le même dossier
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

Merci d'avoir testé, mais du coup je ne sais pas pourquoi ça ne marche pas chez moi (ils sont aussi dans le même dossier).
Messages postés
88
Date d'inscription
dimanche 24 juin 2012
Statut
Membre
Dernière intervention
30 octobre 2014

D'ailleurs ça a peut-être marché chez vous si vous avez compilé le a.py puis le b.py dans le même shell.