pydev无法运行unittest(它在spyder中运行)

时间:2015-06-26 16:59:49

标签: python pydev python-unittest

这不是非常重要,因为我可以在spyder中使它工作,但我非常喜欢pydev(我很习惯于日食)而且它很烦人,我已经已经花了一些时间在它上面,我想解决它。

我有unittest(实际上它属于nltk)而我无法在pydev中使用它。我尝试过的事情:

  • spyder =>中运行它它工作正常
  • 更新了pydeveclipse(虽然我上周没有发布过eclipse Mars;我的版本是eclipse 4.5.0.20150603-1639和pydev 4.1.0.2015052700003)
  • 我可以使用pydev完美地运行其他单元测试,包括断点和所有内容,只要它们位于与nltk不同的项目中
  • 阅读了不少SO问题,但没有找到任何有用的东西
  • 我还尝试将测试内容的部分内容复制到我的一个项目中并且运行良好 - 这可能意味着我正在做的事情很傻,但我不明白。必须是关于我的环境与从nltk结构
  • 运行测试的事实的组合
  • 在python 2.7和3.4中获得相同的行为

我得到的错误如下:

Traceback (most recent call last):
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydevd.py", line 13, in <module>
    from pydevd_breakpoints import * #@UnusedWildImport
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydevd_breakpoints.py", line 15, in <module>
    from pydevd_comm import GetGlobalDebugger
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydevd_comm.py", line 79, in <module>
    import _pydev_completer
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/_pydev_completer.py", line 21, in <module>
    import _pydev_imports_tipper
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/_pydev_imports_tipper.py", line 2, in <module>
    import inspect
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/tools/anaconda/lib/python2.7/inspect.py", line 39, in <module>
    import tokenize
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/git/nltk/nltk/tokenize/__init__.py", line 62, in <module>
    from nltk.data              import load
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/git/nltk/nltk/__init__.py", line 115, in <module>
    from nltk.decorators import decorator, memoize
  File "/Users/lorenzorubio/tools/pydev-mars/Eclipse.app/Contents/Eclipse/plugins/org.python.pydev_4.1.0.201505270003/pysrc/pydev_monkey_qt.py", line 71, in patched_import
    return original_import(name, *args, **kwargs)
  File "/Users/lorenzorubio/git/nltk/nltk/decorators.py", line 183, in <module>
    @decorator
  File "/Users/lorenzorubio/git/nltk/nltk/decorators.py", line 161, in decorator
    if inspect.isclass(caller):
AttributeError: 'module' object has no attribute 'isclass'

我希望有人可以给我一些关于正在发生的事情的暗示。

测试在this github link。 (为了运行它,你应该在twitter分支中下载nltk,虽然它应该尽快合并到主分支,但无论如何,我不指望任何人实际运行它,它已经足够了一个人对此感到恼火)。

我正在使用anaconda来处理python安装,当然我在PYTHONPATH中添加了我用于nltk的分支的路径。

非常感谢你的阅读,也许还有你的指示。

编辑:感谢@ That1Guy发表评论!

命名确实存在冲突,而不是inspect而是tokenize。 python中有tokenizetokenize中的nltk冲突。我确实尝试更改.../anaconda/lib/python2.7/inspect.py而不是

import tokenize

我编辑

from tokenize import tokenize

它有效!

nltk tokenize将为import nltk.tokenize

但是,修改系统文件根本不干净......有更好的解决方案吗?为什么这只发生在pydev

再次感谢。

0 个答案:

没有答案