python:sys未定义

时间:2013-07-20 11:21:25

标签: python sys

我有一段代码正在Linux中工作,我现在正试图在Windows中运行它,我导入sys但是当我使用sys.exit()时。我收到一个错误,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不工作?

4 个答案:

答案 0 :(得分:51)

import sys - try区块的except 移到之外:

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

如果 import sys行之前的任何导入失败,则不会执行该块的 rest ,并且永远不会导入sys 。相反,执行会跳转到异常处理块,然后您尝试访问不存在的名称。

无论如何,

sys是一个内置模块,始终存在,因为它拥有跟踪导入的数据结构;如果导入sys失败,那么您手上就会遇到更大问题(因为这表明所有模块导入都已损坏)。

答案 1 :(得分:4)

您正尝试一次导入所有这些模块。即使其中一个失败,其余的也不会导入。例如:

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

假设foo不存在。然后只会导入datetime

您可以做的是在try / except语句之前导入文件开头的sys模块:

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

答案 2 :(得分: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()

答案 3 :(得分:0)

除了上面给出的答案外,请在控制台中检查错误消息的最后一行。就我而言,sys.path.append('.....')中的“站点包”路径是错误的。