【问题标题】:ENUM module and cStringIO module in PYVISAPYVISA 中的 ENUM 模块和 cStringIO 模块
【发布时间】:2016-02-09 20:14:53
【问题描述】:

我有一些问题要解决。我将 Python 3.2 与 pyvisa 一起用于 Python 3.2 32 位。我用的时候:

import pyvisa

它显示了:

ImportError: No module named enum

但是当我使用时:

import pyqtgraph, pyvisa

我明白了:

ImportError: No module named cStringIO

我只想使用pyvisa 来使用 GPIB 的 Agilent 33250a。

【问题讨论】:

    标签: python python-3.x visa gpib cstringio


    【解决方案1】:

    enum module 直到 Python 3.4 才成为 Python 的一部分,所以 3.2 还为时过早;你需要升级,或者你需要在没有enum 的情况下生活(升级是个好主意;从那时起,Python 的性能和特性有了显着提高;特别是在性能方面,strings and user defined class instances dramatically reduced their memory overhead)。我猜pyvisa 放弃了对早于 3.4 的 Python 版本的支持,如果它们依赖于enum

    cStringIOStringIO 的仅限 Python 2.x 的加速器模块;在 Python 3.0 及更高版本中,您只需导入 io 并使用 io.StringIO,它会在可用时自动使用 C 加速代码,否则将使用纯 Python 代码。如果您只针对 Python 3,只需执行 import iofrom io import StringIO。对于应该在 Python 2 和 Python 3 下运行并在两者中都使用 str 的代码,您可以对导入执行以下操作:

    try:
        from cStringIO import StringIO  # Py2 C accelerated version
    except ImportError:
        try:
            from StringIO import StringIO  # Py2 fallback version
        except ImportError:
            from io import StringIO  # Py3 version
    

    如果您想处理 Unicode 文本而不考虑 Python 版本(好吧,在 2.6 及更高版本中),您可以只使用 io.StringIO 独占;它适用于 Py2 中的 unicode 和 Py3 中的 str,这意味着它处理两个版本中的所有文本(其中 cStringIO 仅处理 Py2 中的 str,因此它无法处理整个 Unicode 范围)。

    我怀疑您对 pyqtgraph 的其他导入错误是因为您尝试安装为 Python 2 编写的 pyqtgraph 版本; pyqtgraph 页面声称与 Python 3.x 兼容,并且使用 cStringIO 没有后备将不符合该声明,因此您安装了错误的版本,或者安装不正确(例如,如果他们使用单个代码库和2to3-ing 它,但是你以某种方式安装了它而没有2to3-ing 它;不知道你会怎么做)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-06
      • 2019-12-19
      • 2015-03-27
      • 1970-01-01
      • 2020-04-10
      • 2018-05-23
      • 1970-01-01
      相关资源
      最近更新 更多