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

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

在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__':之外定义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值