【问题标题】:AttributeError: StringIO instance has no attribute 'encoding'AttributeError:StringIO 实例没有属性“编码”
【发布时间】:2017-06-26 04:18:44
【问题描述】:

在调试鼻子测试时使用 PyCharm 的交互式控制台时,我收到以下错误:

AttributeError: StringIO instance has no attribute 'encoding'

我找到了一些指导here,但我不知道如何将其应用于我的情况。

我该如何解决这个问题?


全栈跟踪:

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 1409, in do_it
    result = pydevconsole.console_exec(self.thread_id, self.frame_id, self.expression, dbg)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 475, in console_exec
    need_more =  exec_code(CodeFragment(expression), updated_globals, frame.f_locals, dbg)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 392, in exec_code
    interpreterInterface = get_interpreter()
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\pydevconsole.py", line 372, in get_interpreter
    interpreterInterface = InterpreterInterface(None, None, threading.currentThread())
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console.py", line 25, in __init__
    self.interpreter = get_pydev_frontend(host, client_port, show_banner=show_banner)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console_011.py", line 488, in get_pydev_frontend
    _PyDevFrontEndContainer._instance = _PyDevFrontEnd(show_banner=show_banner)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2016.3.2\helpers\pydev\_pydev_bundle\pydev_ipython_console_011.py", line 318, in __init__
    self.ipython = PyDevTerminalInteractiveShell.instance()
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\traitlets\config\configurable.py", line 412, in instance
    inst = cls(*args, **kwargs)
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 396, in __init__
    super(TerminalInteractiveShell, self).__init__(*args, **kwargs)
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 499, in __init__
    self.init_io()
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 363, in init_io
    self.enable_win_unicode_console()
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\IPython\terminal\interactiveshell.py", line 357, in enable_win_unicode_console
    stderr=stderr_text_str)
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\__init__.py", line 31, in enable
    readline_hook.enable(use_pyreadline=use_pyreadline)
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\readline_hook.py", line 134, in enable
    check_encodings()
  File "C:\Users\jimgo\Anaconda2\lib\site-packages\win_unicode_console\readline_hook.py", line 50, in check_encodings
    if sys.stdin.encoding != sys.stdout.encoding:
AttributeError: StringIO instance has no attribute 'encoding'

【问题讨论】:

    标签: windows python-2.7 console pycharm nose


    【解决方案1】:

    There's an issue on the JetBrains bug tracker with a solution

    在 PyCharm 中,转到 Run > Edit Configurations > Defaults > Python tests > Nosetests。在Additional arguments 下放--nocapture。然后从左侧窗格的顶部删除所有现有的测试配置。

    尝试再次调试您的测试。不要单击调试面板中的重新测试按钮,因为这似乎重用了以前的配置。而是通过右键单击测试文件再次运行测试。

    【讨论】:

      【解决方案2】:

      万一其他人出现在这里...我有一个类似的堆栈跟踪只是使用:

      import pdb; pdb.set_trace()
      

      就我而言,这是因为我将 Django 配置为:

      TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
      

      这窃取了我的标准输出。

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2015-09-24
        • 2016-06-29
        • 2012-10-07
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        相关资源
        最近更新 更多