使用namedtuples

问题描述:

时,所以“不能导入名称X”,我定义了几个namedtuples在一个单独的文件“types.py”:使用namedtuples

import collections 

TestWindow = collections.namedtuple('TestWindow', 'HWND rect x y w h refPoint') 
Point = collections.namedtuple('Point', 'x y') 

,并想在另一个文件中导入这些类型:

from types import TestWindow, Point 

def main(): 
    pass 

而一旦我添加的第一个导入行,我越来越:

Traceback (most recent call last): 
    File "main.py", line 1, in <module> 
    from types import TestWindow, Point 
ImportError: cannot import name 'TestWindow' 

这里有什么问题吗?

+0

我无法重现您的错误。我创建了两个文件,就像你在这里展示它们一样,运行'python main.py'并且它工作正常。 –

+0

你不告诉我们什么? –

+0

我刚刚将我的代码复制到两个新文件中,并使用'python main.py'运行它,但仍然出现提到的错误。 – user66875

有一个module in stdlib named types,它被导入。

要么重命名您的模块,要么切换到绝对导入。

+0

这可能是正确的答案,但为什么当我这样做的时候它工作? –

+0

确实!谢谢!真的很奇怪,在同一台电脑上完全相同的python环境(windows上的python 3.4)的另一个项目中,即使该文件名为types.py也没有这个问题。 – user66875

+0

@MadPhysicist:你使用Python 3吗? – 9000