【问题标题】:how to solve "nametuple" cant be found in module "collections"?如何解决在模块“集合”中找不到“namedtuple”?
【发布时间】:2019-08-21 01:23:26
【问题描述】:

我正在运行 python 3.7 我正在尝试创建一个文件,该文件用作我创建的 loginpage.py 的运算符,但是当我运行 operator.py 文件时,它给出了很多错误,但它没有指定问题指定的一个问题是 AttributeError: module 'collections' has no attribute 'namedtuple'

我尝试在 pycharm 制作的环境中运行它 检查所有可能的语法一切看起来都不错 我试图在 pything 2.2 到 3.6 中运行不工作

from kivy.uix.boxlayout import BoxLayout


class OperatorWindow(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)


class OperatorApp(App):
    def build(self):
        return OperatorWindow()


if __name__ == "__main__":
    oa = OperatorApp()
    oa.run()

#code ends here

Traceback (most recent call last):
  File "D:/OneDrive/Udemy/My own apps/pos/operator/operator.py", line 1, in <module>
    from kivy.app import App
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\__init__.py", line 32, in <module>
    import shutil
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 10, in <module>
    import fnmatch
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\fnmatch.py", line 14, in <module>
    import re
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\re.py", line 125, in <module>
    import functools
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\functools.py", line 21, in <module>
    from collections import namedtuple
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\collections\__init__.py", line 21, in <module>
    from operator import itemgetter as _itemgetter, eq as _eq
  File "D:\OneDrive\Udemy\My own apps\pos\operator\operator.py", line 1, in <module>
    from kivy.app import App
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\app.py", line 316, in <module>
    from inspect import getfile
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\inspect.py", line 35, in <module>
    import dis
  File "C:\Users\T\AppData\Local\Programs\Python\Python37-32\lib\dis.py", line 184, in <module>
    _Instruction = collections.namedtuple("_Instruction",
AttributeError: module 'collections' has no attribute 'namedtuple'

这样的预期是打开一个名为 operator 的窗口,它将是空白的,但它不会打开它

我在上面的代码中输入的错误消息

【问题讨论】:

    标签: python python-3.x python-2.7 kivy kivy-language


    【解决方案1】:

    调用你的模块operator 不是一个好的选择。 它隐藏了标准库中的一个模块。

    关键难点在于import operator 现在不会拉入通常的功能。

    考虑将所有内容向下推一级, 所以你以myapp.operator 访问你的模块 而不仅仅是operator。 或者,您可以重命名为operator1.py, 或重命名operator 目录。

    【讨论】:

    • 在这种情况下,可以通过注意 stdlib 函数导入用户模块和循环导入来发现错误。
    • @J_H 现在运行完美,窗口操作符弹出显示,一切恢复正常。我很感激帮助。非常感谢!
    猜你喜欢
    • 2019-09-10
    • 2022-09-23
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2019-04-25
    • 2021-10-13
    • 2021-04-08
    相关资源
    最近更新 更多