NameError:未定义名称“N_TOKENS”

时间:2012-04-08 22:56:00

标签: python python-2.7 pycharm

我是Python新手,刚刚安装了PyCharm for Windows。从Skype下载了一些示例代码,用于测试他们的SkypeKit API。但是......一旦我点击调试按钮,我就明白了:(我安装了Python 2.7和Django 1.4)

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.0.2\helpers\pydev\pydevd.py", line 2, in <module>
    from django_debug import DjangoLineBreakpoint
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.0.2\helpers\pydev\django_debug.py", line 1, in <module>
    import inspect
  File "C:\Program Files (x86)\Python27\lib\inspect.py", line 39, in <module>
    import tokenize
  File "C:\Program Files (x86)\Python27\lib\tokenize.py", line 38, in <module>
    COMMENT = N_TOKENS
NameError: name 'N_TOKENS' is not defined

Process finished with exit code 1

这意味着什么,我该怎么做才能解决它?

5 个答案:

答案 0 :(得分:13)

tokenize.py模块可能正在加载错误的token.py模块。见error importing numpy。解决方案1)重命名新的token.py(token2.py)并在tokenize.py等中更新对它的引用。解决方案2)如果新的token.py在python包中,你可以消除import语句的歧义:

import CorrectPythonPackage.token as token2

#or 

from CorrectPythonPackage.token import *

其中CorrectPythonPackage是包含token.py文件的文件夹名称。

答案 1 :(得分:6)

就我而言,我创建了一个名为token.py的文件作为解析练习,导致初始命名空间冲突。但是,只需在Eclipse项目中重命名文件并不能始终解决问题。有时在运行python时会创建一个带有* .pyc结尾的已编译字节码文件。您可能还必须使用文件系统命令查找和删除它。

答案 2 :(得分:3)

它对我有用。

  1. 将文件/usr/lib/python2.7/token.py重命名为/usr/lib/python2.7/token2.py
  2. 打开/usr/lib/python2.7/tokenize.py
  3. from token import *更改为from token2 import *
  4. 进行。

答案 3 :(得分:1)

也许您已将程序的模块命名为“令牌”。重命名并更改导入语句,您可以解决问题。如果是开发者的错,请把它们指向我的答案。尝试在sourceforge上修复pylaga时遇到了相同的错误,并通过这种方式解决了。在那种情况下,python的导入路径也被操纵了,这可能迫使python导入了程序的token.py而不是它自己的令牌,并且无法标记事物(实际上,N_TOKENS是在Python自己的token.py中定义的,例如/usr/lib64/python2.7/token.py)。

答案 4 :(得分:0)

当我激活virtualenv时,我看到了这一点,但没有更改为venv目录。尝试导入tokenize(来自系统模块的zip)失败了。

将我的工作目录更改为虚拟环境的根目录解决了问题(可能是相对路径问题)。