python错误之nameerror_python NameError:未定义名称“”(但它是!)

注意:已解决。原来我正在导入同一模块的以前版本。

在StackOverflow上很容易找到类似的主题,其中有人遇到了NameError。但大多数问题都涉及到特定的模块,解决方案往往是更新模块。

在我的例子中,我试图从我自己编写的模块中导入一个函数。模块名为InfraPy,它肯定位于sys.path上。InfraPy中的一个特定函数(称为listtoext)返回一个NameError,但仅当我试图将其导入到另一个脚本时。在InfraPy中,在if __name__=='__main__':下,listToText函数工作正常。从InfraPy中,我可以毫无问题地导入其他函数。在我的脚本中包含from InfraPy import *不会返回任何错误,除非我尝试使用listToText函数。

这怎么可能发生?

在导入同一模块中的所有其他函数时,如何导入一个特定函数返回NameError?

在MacOSX10.6上使用Python2.6,在Windows7上运行脚本时也遇到同样的错误,在.NET4.0上使用IronPython2.6

谢谢。

如果你认为有其他细节有助于解决这个问题,我很乐意提供。

根据要求,下面是InfraPy内部的函数定义:def listToText(inputList, folder=None, outputName='list.txt'):

'''

Creates a text file from a list (with each list item on a separate line). May be placed in any given folder, but will otherwise be created in the working directory of the python interpreter.

'''

fname = outputName

if folder != None:

fname = folder+'/'+fname

f = open(fname, 'w')

for file in inputList:

f.write(file+'\n')

f.close()

此函数在if __name__=='__main__':的上方和外部定义

我试着把InfraPy和剧本联系起来。最令人困惑的情况是,当InfraPy与脚本位于同一文件夹中时,如果我使用from InfraPy import listToText导入,就会收到这个错误:NameError: name listToText is not defined。同样,其他函数也可以导入fine,它们都是在InfraPy中的if __name__=='__main__':之外定义的。

你可能感兴趣的:(python错误之nameerror_python NameError:未定义名称“”(但它是!))