【问题标题】:ImportError: cannot import name SerializerImportError:无法导入名称序列化程序
【发布时间】:2015-11-23 16:31:21
【问题描述】:

我正在使用 python 2.7 并尝试运行 python-xbrl 包。遵循确切的说明here,但每次我尝试import xbrlfrom xbrl import XBRLParser, GAAP, GAAPSerializer 我都会得到

ImportError                               Traceback (most recent call last)
<ipython-input-2-ccb496289539> in <module>()
----> 1 import xbrl

/usr/local/lib/python2.7/dist-packages/xbrl/__init__.py in <module>()
      6 version = (1, 1, 0)
      7 
----> 8 from .xbrl import XBRLParser, GAAP, GAAPSerializer, XBRLParserException

/usr/local/lib/python2.7/dist-packages/xbrl/xbrl.py in <module>()
      3 
      4 import re
----> 5 from marshmallow import Serializer, fields
      6 import datetime
      7 import collections

ImportError: cannot import name Serializer

到目前为止,我已经更新了所有必需的包 (pytest, pep8, marshmallow, beautifulsoup4, ordereddict, lxml, six) 并更新了 python-xbrl,但我仍然遇到同样的错误。

【问题讨论】:

    标签: python python-2.7 xbrl


    【解决方案1】:

    这是棉花糖版本的问题。试试 -

    pip uninstall marshmallow
    pip install marshmallow==1.2.6
    

    【讨论】:

    • 这样做了,然后重新安装了python-xbrl,不幸的是仍然有同样的问题。
    • 不要重新安装python-xbrl,我认为它会升级棉花糖版本。你可以用 pip freeze 来检查当前的棉花糖版本吗?
    • 它不会升级棉花糖版本。我发现了这个问题。 marshmallow 包使用serializer 而不是Serializer,所以from marshmallow import serializer 有效。
    • 当我在我的电脑上完成这个过程时,它确实升级了棉花糖。但只要它现在有效,一切都很好。
    • 并非如此。如果我想运行 python-xbrl 包,我需要更改该包中的文件,以便他们调用 serializer 而不是 Serializer,但我不能,因为我不是文件的所有者。
    【解决方案2】:

    我认为这是一个已知问题,如 here 所示。

    我们只需要从 github 安装最新的更新。 sudo pip install git+https://github.com/greedo/python-xbrl.git

    【讨论】:

    • 感谢这对我有帮助。你在这个图书馆做什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2014-10-10
    • 2014-09-20
    相关资源
    最近更新 更多