J'ai un morceau de code qui fonctionne dans Linux, et j'essaye maintenant de l'exécuter dans Windows, j'importe sys mais quand j'utilise sys.exit (). Je reçois une erreur, sys n'est pas défini. Voici le début de mon code
try:
import numpy as np
import pyfits as pf
import scipy.ndimage as nd
import pylab as pl
import os
import heapq
import sys
from scipy.optimize import leastsq
except ImportError:
print "Error: missing one of the libraries (numpy, pyfits, scipy, matplotlib)"
sys.exit()
Pourquoi le système ne fonctionne-t-il pas?
Déplacer import sys
à l'extérieur du bloc try
-except
:
import sys
try:
# ...
except ImportError:
# ...
Si une des importations avant la ligne import sys
Échoue, le reste du bloc n'est pas exécuté et sys
n'est jamais importé. Au lieu de cela, l'exécution saute au bloc de gestion des exceptions, où vous essayez ensuite d'accéder à un nom non existant.
sys
est un module intégré de toute façon, il est toujours car il contient les structures de données permettant de suivre les importations; si l’importation de sys
échoue, vous avez de plus gros problèmes (car cela indiquerait que toute l’importation de modules est interrompue).
Vous essayez d'importer tous ces modules en même temps. Même si l'un d'entre eux échoue, le reste ne sera pas importé. Par exemple:
try:
import datetime
import foo
import sys
except ImportError:
pass
Disons que foo
n'existe pas. Alors seulement datetime
sera importé.
Ce que vous pouvez faire, c'est importer le module sys au début du fichier, avant l'instruction try/except:
import sys
try:
import numpy as np
import pyfits as pf
import scipy.ndimage as nd
import pylab as pl
import os
import heapq
from scipy.optimize import leastsq
except ImportError:
print "Error: missing one of the libraries (numpy, pyfits, scipy, matplotlib)"
sys.exit()
Je suppose que votre code a échoué AVANT d'importer le système, il ne peut donc pas le trouver lorsque vous gérez l'exception.
En outre, vous devriez indenter le code dans le bloc try
.
essayer:
import sys
# .. other safe imports
try:
import numpy as np
# other unsafe imports
except ImportError:
print "Error: missing one of the libraries (numpy, pyfits, scipy, matplotlib)"
sys.exit()