1

我有一些麻烦要解决。我将 Python 3.2 与pyvisaPython 3.2 32 位一起使用。当我使用:

import pyvisa

它显示:

ImportError: No module named enum

但是当我使用:

import pyqtgraph, pyvisa

我得到:

ImportError: No module named cStringIO

我只想使用pyvisaGPIB 的 Agilent 33250a。

4

1 回答 1

0

enum模块直到 Python 3.4 才成为 Python 的一部分,因此 3.2 还为时过早;你需要升级,或者你需要不enum升级(升级是个好主意;从那时起,Python 的性能和特性有了显着提高;特别是在性能方面,字符串和用户定义的类实例显着降低了它们的内存开销)。我猜pyvisa如果它们依赖于enum.

cStringIO是一个仅适用于 Python 2.x 的加速器模块StringIO;在 Python 3.0 及更高版本中,您只需 importio和 use io.StringIO,它会在可用时自动使用 C 加速代码,否则将使用纯 Python 代码。如果您只针对 Python 3,只需执行import ioor from 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独占;它适用unicode于 Py2 和strPy3,这意味着它处理两个版本中的所有文本(cStringIOstr在 Py2 中处理,因此它无法处理整个 Unicode 范围)。

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

于 2015-12-10T01:53:44.503 回答