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

2024-06-28 20:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我得到了这个unittest(实际上它属于nltk),我不能让它在pydev中工作。我尝试过的事情:

  • spyder=>;运行良好
  • 更新了pydeveclipse(虽然我还没有加入上周发布的eclipsemars;我的版本是eclipse4.5.0.20150603-1639和pydev4.1.0.201505270003)
  • 我可以用pydev完美地运行其他单元测试,包括断点和所有东西,前提是它们在与nltk不同的项目中
  • 读了不少这样的问题,但没有发现任何有帮助的东西
  • 我还试着把测试的部分内容复制到我的一个项目中,效果很好——这可能意味着我在做一些愚蠢的事情,但我不明白。一定是我的环境和从nltk结构运行测试的结合
  • 在Python2.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中有一个tokenizenltk中的tokenize冲突。我确实试着在.../anaconda/lib/python2.7/inspect.py中改变,而不是

^{pr2}$

我编辑到

from tokenize import tokenize

而且很管用!

nltk标记化将是import nltk.tokenize

不过,修改系统文件一点也不干净。。。有更好的解决办法吗?为什么这只发生在pydev

再次感谢。


Tags: inpyimportapplinecontentspluginstools