python:未定义sys

2024-04-25 14:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段在Linux中运行的代码,现在我正试图在windows中运行它,我导入sys,但是当我使用sys.exit()时。我得到一个错误,系统没有定义。这是我代码的开始部分

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

为什么系统不工作??


Tags: 代码importnumpy定义linuxwindows系统as
3条回答

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

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

我猜您的代码在导入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()

import sys移到try-except块的外部:

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

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

sys无论如何都是一个内置模块,它总是存在,因为它拥有跟踪导入的数据结构;如果导入sys失败,您手上会有更大的问题(因为这表明所有模块导入都已中断)。

相关问题 更多 >

    热门问题