import de fichiers, comment ca marche ? [python] - Python - Programmation
Marsh Posté le 07-09-2004 à 17:50:06
y'a pas de probleme de double inclusion en python...
montre l'erreur exacte, et eventuellement la partie interessante du source (genre l'import a partir de myConf, et la definition de la fonction foo)
Marsh Posté le 07-09-2004 à 17:51:28
jamais d'import *
par contre les inclusions récursives ça existe
Marsh Posté le 07-09-2004 à 17:52:59
Taz a écrit : jamais d'import * |
ca devrait pas poser de probleme, puisque le module est caché dans sys.modules, on essaye pas de le relire, donc y'a pas de recursion infinie logiquement
Marsh Posté le 07-09-2004 à 17:53:03
import * from foo saitraimal
Marsh Posté le 07-09-2004 à 18:04:36
a vrai dire je m'en doutais un peu mais avec import foo ca marche pas non plus :
fichier1.py
Code :
|
fichier2.py
Code :
|
output :
>python -u "fichier1.py" |
Marsh Posté le 07-09-2004 à 18:08:04
il faut préfixer par le nom du module quand on importe de cette maniere
Marsh Posté le 07-09-2004 à 18:09:23
et y'a pas moyen d'importer la totalité d'un module ? ou alors c'est crade ?
Marsh Posté le 07-09-2004 à 18:10:50
quand tu fais "import foo", ca crée un namespace
donc si t'as une fonction 'bar' dans le module 'foo', tu l'appelles en faisant
Code :
|
Tu devrais te faire Dive Into Python, a mon avis c'a t'aiderait à apprendre 2-3 notions de base
Marsh Posté le 07-09-2004 à 18:12:26
euh en fait je l'ai lu et ca m'a pas mal aidé ... mais c'etait y'a un mois, j'ai pas touché au code depuis et aujourd'hui je me suis contenté de la doc officielle
Marsh Posté le 07-09-2004 à 18:14:47
Citation : et y'a pas moyen d'importer la totalité d'un module ? ou alors c'est crade ? |
Quand tu fais import foo, ca importe l'intégralité du module foo hein -_-
Marsh Posté le 11-09-2004 à 20:26:45
Taz a écrit : jamais d'import * |
mais
Citation : |
Marsh Posté le 11-09-2004 à 21:48:21
en même temps je suis sur le forum python, c'est aussi pour se renseigner.
moi import * from bidule ça plante
donc, je pensais que "import *" était un raccourci pour signifier "from Machin import *"
d'où icompréhension de ma part
Marsh Posté le 11-09-2004 à 21:50:51
déjà la syntaxe à proscrire dans la majorité des cas c'est 'from A import *'
quand à 'from __future__ import *' tu peux y aller autant que tu veux
Marsh Posté le 11-09-2004 à 21:58:13
ah ok, ça me rassure.
je pensais bien à from A import *
et donc, effectivement, je vois pas la nuance entre from A import * avec A module python, et from __future__ import *
pourquoi __future__ est pas soumis à cette règle ?
Marsh Posté le 11-09-2004 à 22:14:56
parce que __future__ est un module spécial au contenu variable et instable qui fournit des extensions généralement disponible dans la version suivante
Marsh Posté le 11-09-2004 à 22:18:13
mais, quel problème tu trouves à from Machin import * qui ne soit pas vrai pour __future__ ?
parce que bon, moi le problème de from Machin import * , à part que ça me parraît un peu bordélique d'importer tout en vrac sans savoir, je vois pas
Marsh Posté le 11-09-2004 à 22:47:25
ben oui c'est bordélique, déjà ça pose des problèmes de collisions et ça ralentit aussi l'exécution.
Marsh Posté le 13-09-2004 à 09:38:44
from a import *
-> gros bordel parce que ca importe tout dans le namespace local
-> si tu as une fonction du même nom qu'une des fonctions importées, ou que tu définis une fonction du même nom qu'une fonction importée, tu fais comment?
un simple "import module" et t'as plus le problème, tout est plein de sécurité, et en plus tu peux utiliser les fonctions de gestion de contenu de python (histoire de lister les contenus de modules tout ca)
Marsh Posté le 28-01-2005 à 17:57:31
j'ai un problème sous windows j'ai fais un réperoire inc
et j'ai un fichier main.py
dedans j'ai mis :
import inc/setupxml
seulement sa marche pas a cause du slash si je met un backslash sa ne marche pas non plus.
Merci de m'aider sa serais bien cool.
Marsh Posté le 28-01-2005 à 18:28:38
tiburon a écrit : j'ai un problème sous windows j'ai fais un réperoire inc |
if faut utiliser un point :
import inc.setupxml
Le_GLu
Marsh Posté le 31-01-2005 à 15:26:10
Je dévellope sous windows et malheureusement le point ne fonctionne pas , voici le message d'erreur
File "main.py", line 1, in ?
import inc.setupxml
ImportError: No module named inc.setupxml
>Exit code: 1
Marsh Posté le 31-01-2005 à 15:30:42
tiburon a écrit : Je dévellope sous windows et malheureusement le point ne fonctionne pas , voici le message d'erreur |
Il n'existe pas d'import relatif comme en C en Python. Le point sert pour la notion de package et de sous package. Donc si tu veux que inc.setupxml marche, il te faut transformer inc en package et setupxml en sous package de inc
Vu le nom, je doute qu'il faille vraiment faire comme ça. Je te suggère donc plustot de simplement mettre le répertoire inc dans le path de recherche des modules.
Marsh Posté le 07-09-2004 à 17:46:49
j'ai potassé un peu la doc sur les modules mais y'a un truc que je pige pas :
j'ai un script qui commence a etre long donc j'aimerais le splitter dans plusieurs fichiers en séparant les fonctions par utilité (par exemple j'ai myMain.py, myConf.py, myUtils.py, ...), le problème est que je pige pas comment importer proprement mes fonctions d'un fichier a l'autre
myMain utilise des fonctions présentent dans myUtils donc : import * from myUtils
myMain utilise des fonctions présentent dans myConf donc : import * from myConf
myConf utilise des fonctions présentent dans myUtils donc : import * from myUtils
...
et a chaque fois il me sort une erreur comme quoi dans myConf il ne peut pas importer ma fonction foo de mon fichier myUtils
je suppose que je suis passé a coté de quelque chose (double inclusion ou un truc dans le genre)
si vous avez des idées ...
---------------
\@/