Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1425 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [python] import de fichiers, comment ca marche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[python] import de fichiers, comment ca marche ?

n°844367
lint
O_O
Posté le 07-09-2004 à 17:46:49  profilanswer
 

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 ...


---------------
\@/
mood
Publicité
Posté le 07-09-2004 à 17:46:49  profilanswer
 

n°844370
lorill
Posté le 07-09-2004 à 17:50:06  profilanswer
 

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)

n°844372
Taz
bisounours-codeur
Posté le 07-09-2004 à 17:51:28  profilanswer
 

jamais d'import * :o
par contre les inclusions récursives ça existe

n°844375
lorill
Posté le 07-09-2004 à 17:52:59  profilanswer
 

Taz a écrit :

jamais d'import * :o
par contre les inclusions récursives ça existe


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

n°844376
masklinn
í dag viðrar vel til loftárása
Posté le 07-09-2004 à 17:53:03  profilanswer
 

import * from foo saitraimal [:sisicaivrai]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°844394
lint
O_O
Posté le 07-09-2004 à 18:04:36  profilanswer
 

a vrai dire je m'en doutais un peu mais avec import foo ca marche pas non plus :
 
fichier1.py

Code :
  1. import fichier2
  2. def func1():
  3.     print "hello i'm func1 :)"
  4.     func3()
  5. def func2():
  6.     print "hello i'm func2 :)"
  7. if __name__ == '__main__':
  8.     func1()


 
fichier2.py

Code :
  1. import fichier1
  2. def func3():
  3.     print "hello i'm func3 :)"
  4.     func2()


 
output :

>python -u "fichier1.py"
hello i'm func1 :)
Traceback (most recent call last):
  File "fichier1.py", line 11, in ?
    func1()
  File "fichier1.py", line 5, in func1
    func3()
NameError: global name 'func3' is not defined
>Exit code: 1


 
:'(


Message édité par lint le 07-09-2004 à 18:06:19

---------------
\@/
n°844401
lorill
Posté le 07-09-2004 à 18:07:47  profilanswer
 

fichier2.func3()

n°844402
lorill
Posté le 07-09-2004 à 18:08:04  profilanswer
 

il faut préfixer par le nom du module quand on importe de cette maniere

n°844406
lint
O_O
Posté le 07-09-2004 à 18:09:23  profilanswer
 

et y'a pas moyen d'importer la totalité d'un module ? ou alors c'est crade ?


---------------
\@/
n°844407
masklinn
í dag viðrar vel til loftárása
Posté le 07-09-2004 à 18:10:50  profilanswer
 

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 :
  1. import foo # importe le module
  2. foo.bar() # accède au membre 'bar' de 'foo'


 
Tu devrais te faire Dive Into Python, a mon avis c'a t'aiderait à apprendre 2-3 notions de base


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
mood
Publicité
Posté le 07-09-2004 à 18:10:50  profilanswer
 

n°844409
lint
O_O
Posté le 07-09-2004 à 18:12:26  profilanswer
 

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 [:joce]


---------------
\@/
n°844411
masklinn
í dag viðrar vel til loftárása
Posté le 07-09-2004 à 18:14:47  profilanswer
 

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 -_-


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°844414
lint
O_O
Posté le 07-09-2004 à 18:16:54  profilanswer
 

ouais j'etais passé a coté
merci :jap:


---------------
\@/
n°847889
raytaller
Posté le 11-09-2004 à 20:26:45  profilanswer
 

Taz a écrit :

jamais d'import * :o
par contre les inclusions récursives ça existe


 
mais
 

Citation :


Taz
from __future__ import *

n°847900
Taz
bisounours-codeur
Posté le 11-09-2004 à 21:09:32  profilanswer
 

je ne sais pas si tu as saisis la nuance

n°847903
raytaller
Posté le 11-09-2004 à 21:42:40  profilanswer
 

bah non

n°847904
Taz
bisounours-codeur
Posté le 11-09-2004 à 21:45:48  profilanswer
 

faudrait faire un peu de python alors ...

n°847905
raytaller
Posté le 11-09-2004 à 21:48:21  profilanswer
 

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

n°847906
Taz
bisounours-codeur
Posté le 11-09-2004 à 21:50:51  profilanswer
 

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

n°847909
raytaller
Posté le 11-09-2004 à 21:58:13  profilanswer
 

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 ?

n°847914
Taz
bisounours-codeur
Posté le 11-09-2004 à 22:14:56  profilanswer
 

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 :o

n°847915
raytaller
Posté le 11-09-2004 à 22:18:13  profilanswer
 

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

n°847927
Taz
bisounours-codeur
Posté le 11-09-2004 à 22:47:25  profilanswer
 

ben oui c'est bordélique, déjà ça pose des problèmes de collisions et ça ralentit aussi l'exécution.

n°847937
raytaller
Posté le 11-09-2004 à 22:54:11  profilanswer
 

bon

n°848369
masklinn
í dag viðrar vel til loftárása
Posté le 13-09-2004 à 09:38:44  profilanswer
 

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)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°964902
tiburon
préservatif oublié vie gachée
Posté le 28-01-2005 à 17:57:31  profilanswer
 

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.

n°964920
le_GLu
Posté le 28-01-2005 à 18:28:38  profilanswer
 

tiburon a écrit :

j'ai un problème sous windows j'ai fais un réperoire inc
 
et j'ai un fichier main.py
 
import inc/setupxml
 


 
if faut utiliser un point :
 
import inc.setupxml
 
Le_GLu


---------------
Python facile : http://pythonfacile.free.fr/ Les ressources (liens) en français sur Python.
n°966859
tiburon
préservatif oublié vie gachée
Posté le 31-01-2005 à 15:26:10  profilanswer
 

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
 
 
 

n°966862
Kristoph
Posté le 31-01-2005 à 15:30:42  profilanswer
 

tiburon a écrit :

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


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.


Message édité par Kristoph le 31-01-2005 à 15:31:01
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [python] import de fichiers, comment ca marche ?

 

Sujets relatifs
Python pour remplacer une legacy app?[Fortran] fichiers sortie
[batch] fichierszone de notification en python
Liaison de fichiers sous windev 7.5Listage de fichiers avec array
{- Debutant -} Comment ça marche la gestion de contenu de site?Fichiers FIC ert NDX
[CSS] Ca marche avec Firefox mais pas avec IE... Comment faire ?import dynamique
Plus de sujets relatifs à : [python] import de fichiers, comment ca marche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR