2013-07-20 9 views
17

मेरे पास कोड का एक टुकड़ा है जो लिनक्स में काम कर रहा है, और अब मैं इसे विंडोज़ में चलाने की कोशिश कर रहा हूं, मैं sys आयात करता हूं लेकिन जब मैं sys.exit() का उपयोग करता हूं। मुझे एक त्रुटि मिलती है, sys परिभाषित नहीं किया गया है। यहां मेरे कोडपायथन: sys परिभाषित नहीं किया गया है

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() 

sys क्यों काम नहीं कर रहा है?

उत्तर

33

ले जाएँ import systry के बाहर - except ब्लॉक:

import sys 
try: 
    # ... 
except ImportError: 
    # ... 

तो आयात से पहले import sys लाइन में विफल रहता है, के किसी भी बाकी ब्लॉक के निष्पादित नहीं है, और sys है कभी आयात नहीं किया इसके बजाए, निष्पादन अपवाद हैंडलिंग ब्लॉक पर कूदता है, जहां आप एक गैर-मौजूदा नाम तक पहुंचने का प्रयास करते हैं।

sys यह हमेशा है वर्तमान के रूप में यह आयात ट्रैक करने के लिए डेटा संरचनाओं रखती है एक अंतर्निहित मॉड्यूल वैसे भी है; यदि sys आयात करने में विफल रहता है, तो आपके हाथ में बड़ी समस्याएं हैं (जैसा कि यह इंगित करेगा कि सभी मॉड्यूल आयात टूट गया है)।

+0

आह, हाँ, धन्यवाद – astrochris

4

आप एक ही समय में उन सभी मॉड्यूल आयात करने की कोशिश कर रहे हैं। यहां तक ​​कि यदि उनमें से एक विफल रहता है, तो बाकी आयात नहीं करेंगे। उदाहरण के लिए:

try: 
    import datetime 
    import foo 
    import sys 
except ImportError: 
    pass 

मान लें कि foo मौजूद नहीं है। फिर केवल datetime आयात किया जाएगा।

आप क्या कर सकते हैं फ़ाइल की शुरुआत में सिस मॉड्यूल आयात करते हैं, कोशिश से पहले/बयान को छोड़कर है:

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() 
+0

आह, हाँ, धन्यवाद – astrochris

1

मैं अपने कोड आयात sys से पहले विफल रही है अनुमान लगा रहा हूँ, तो यह नहीं कर सकते जब आप अपवाद को संभालेंगे तो इसे ढूंढें।

इसके अलावा, आपको try ब्लॉक के साथ अपना कोड इंडेंट करना चाहिए।

कोशिश:

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() 
संबंधित मुद्दे