import de module conditionnel

Document Actions
Réponses: 7   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

import de module conditionnel

Posté par awalter1 le 27/08/2010 11:48
Bonjour,

j'ai une machine linux L1 de développement et une machine linux L2 cible.
La ligne suivante :
from matplotlib.backends.backend_gtkagg import *
provoque un floating exception sur la machine L1 mais pas sur la machine L2 (je n'ai pas le temps de déboguer les plantages de python): c'est L2 qui prime. Si je ne fais pas cet import pour la machine L1 j'ai une implémentation différente de ce que je veux faire, ce n'est donc pas bloquant.
Donc, j'avais dans l'idée de réaliser l'import si l'appli s'exécutait sur L2 et ne pas le faire si c'était sur L1
Mais comment faire et est ce possible ?
merci

Re: import de module conditionnel

Posté par fredogo le 27/08/2010 13:46
Mouais...

J'ai pas tout compris! Pour tester l'import d'un module il suffit de faire ce code.

code:
try:
    from matplotlib.backends.backend_gtkagg import *
except ImportError:
....Execution sur L2#les points de suspension sont juste là pour marquer l'indentation


Cela testera le fonctionnement du module sur ta machine, mais comme j'ai pas compris comment tu passes de la machine L1 à la machine L2, je peux pas plus t'aider.

sad Re: import de module conditionnel

Posté par awalter1 le 27/08/2010 15:06
Merci, j'aurais pu y penser, mais après essai ça ne marche pas : l'exception n'est pas déclenchée. Ensuite, j'ai remplacé ImportError par FloatingPointError étant donné que le message sur le terminal est
code:
1195 Floating point exception/usr/local/bin/python
. C'est pareil
Utilisation de L1 et L2 : je développe et teste sur une machine L1, mais l'application en final doit s'exécuter sur la machine L2 du client. L'application python est livrée et installée sur cet autre site avec une configuration linux/python/pygtk/gtk identique mais visiblement un comportement différent sur certains points.

Re: import de module conditionnel

Posté par fredogo le 27/08/2010 16:04
Floating Point est un problème arithmétique.

Met plutôt

code:
try:
    from matplotlib.backends.backend_gtkagg import *
except ArithmeticError:
....Traiter avec L2

Re: import de module conditionnel

Posté par awalter1 le 27/08/2010 16:11
Toujours pareil.
J'ai bien vérifier l'orthographe car on peut mettre n'importe quel nom pour l'exception, python ne réagit pas.
code:
try:
   from matplotlib.backends.backend_gtkagg import *
except ArithmeticError:
   print "ImportError"

Merci

Re: import de module conditionnel

Posté par fredogo le 27/08/2010 16:20
Hmmm...

Je pense tout simplement que l'import fonctionne correctement sur L1.

Si ce n'est pas le cas, tente un cas plus généralisé.

code:
try:
   from matplotlib.backends.backend_gtkagg import *
except:
   print "ImportError"

Re: import de module conditionnel

Posté par awalter1 le 27/08/2010 16:32
Toujours pareil !
Je ne sais pas si l'import fonctionne ou pas, je constate qu'en commentant la ligne
code:
from matplotlib.backends.backend_gtkagg import *
, l'application se lance sinon le Floating exception est levé.
C'est comme si l'exception ne venait pas de mon application mais de python lui même : le fait de parser des directives non prévues trouvées dans les modules importés.

Python.org : Le site officiel du langage Python.
Zope.org : Le site web officiel de Zope.
Daily Python-URL : Actus de l'univers Python.
Tribute to Zyons : Zyons notre ami et membre fondateur de l'Afpy, nous quittait en 2005.