python:sys未定义

ast*_*ris 32 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()
Run Code Online (Sandbox Code Playgroud)

为什么sys不工作?

Mar*_*ers 59

移动import sys 以外的中try- except块:

import sys
try:
    # ...
except ImportError:
    # ...
Run Code Online (Sandbox Code Playgroud)

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

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


Ter*_*ryA 5

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

try:
    import datetime
    import foo
    import sys
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

假设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()
Run Code Online (Sandbox Code Playgroud)