【问题标题】:IPython: Name Error: Name 'x' is not definedIPython:名称错误:未定义名称“x”
【发布时间】:2020-05-13 10:21:42
【问题描述】:

使用 Raspberry Pi 4 和 Raspbian 操作系统。我正在尝试使用下面提到的代码从我的 Python 脚本中访问 BASLER 相机。

from __future__ import print_function
import sys
from IPython.utils._tokenize_py2 import String
sys.path.append('.')
import numpy, ctypes
Pylonlib = "/opt/pylon5/lib64/libpylonc.so"
from ctypes import cdll
libc = cdll.LoadLibrary(Pylonlib)
libc.PylonInitialize()
#### call any plyon function after you have initialized
libc.PylonTerminate()

当我运行此代码时,我收到名称错误。

Traceback (most recent call last):
   File "/home/pi/Desktop/cv_ex_1.py", line 3, in <module>
   from IPython.utils._tokenize_py2 import String
   File "/usr/lib/python3/dist-packages/IPython/utils/_tokenize_py2.py", line 46, in <module>
       del x
NameError: name 'x' is not defined

我能做些什么来解决这个问题?

【问题讨论】:

    标签: python-3.x python-2.7 ipython ctypes


    【解决方案1】:

    考虑一下代码 sn-p y = [x for x in [1,2,3]]。在 Python 2 中,x 泄露出来了,所以运行之后,全局的 x 是 3。Python 3 修复了这个问题,所以在那里运行导致 x 最后没有设置。

    当 Python 2 仍受支持且可以安全使用时,IPython 有两个不同的标记化库,一个名为 _tokenize_py2,一个名为 _tokenize_py3_tokenize_py2 包含这两行:

    __all__ = [x for x in dir(token) if not x.startswith("_")]
    del x
    

    第二个旨在解决这个确切的问题。但是,您使用的是 Python 3,所以 x 已经没有设置在那里,从而导致它失败。您需要改用 Python 3 版本的 tokenize。只需将_tokenize_py2 切换为_tokenize_py3 即可完成此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2021-04-02
      • 2016-03-28
      • 2015-01-28
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多