我有一些麻烦要解决。我将 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 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。
该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 io
or 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 和str
Py3,这意味着它处理两个版本中的所有文本(cStringIO
仅str
在 Py2 中处理,因此它无法处理整个 Unicode 范围)。
我怀疑您的另一个导入错误pyqtgraph
是因为您尝试安装pyqtgraph
为 Python 2 编写的版本;该pyqtgraph
页面声称与 Python 3.x 兼容,并且在cStringIO
没有后备的情况下使用 of 将不符合该声明,因此要么您安装了错误的版本,要么安装不正确(例如,如果他们使用单个代码库并2to3
-ing 它,但是你以某种方式安装了它而没有2to3
-ing 它;不知道你会怎么做)。