首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PYVISA中的ENUM模块和cStringIO模块

PYVISA中的ENUM模块和cStringIO模块
EN

Stack Overflow用户
提问于 2015-11-09 16:07:25
回答 1查看 71关注 0票数 1

我有点麻烦要解决。我使用的是32位Python3.2和pyvisa的Python3.2。当我使用的时候:

代码语言:javascript
复制
import pyvisa

它显示:

代码语言:javascript
复制
ImportError: No module named enum

但是当我使用的时候:

代码语言:javascript
复制
import pyqtgraph, pyvisa

我得到了:

代码语言:javascript
复制
ImportError: No module named cStringIO

我只想用pyvisa来使用GPIB的Agilent33250a。

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 09:53:45

enum module直到Python3.4才成为Python的一部分,因此3.2版本还为时过早;您需要升级,否则您需要在没有enum的情况下生活(请记住,升级是一个好主意;从那时起,Python的性能和特性有了显著的提高;特别是在性能方面,strings and user defined class instances dramatically reduced their memory overhead)。我猜如果依赖于enumpyvisa会放弃对早于3.4的Python版本的支持。

cStringIO是用于StringIO的Python2.x唯一的加速器模块;在Python3.0和更高版本中,您只需导入io并使用io.StringIO,它将在可用时自动使用C加速代码,否则将自动使用纯Python代码。如果你只针对Python3,那就使用import iofrom io import StringIO吧。对于应该在Python2和Python3下运行的代码,并且在两者中都使用str,您可以对导入执行以下操作:

代码语言:javascript
复制
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

如果您想处理与Python版本无关的Unicode文本(好吧,在2.6和更高版本中),您可以只使用io.StringIO;它可以在Py2中使用unicode,在Py3中使用str,这意味着它可以处理这两个版本中的所有文本( cStringIO只处理Py2中的str,所以它不能处理整个Unicode范围)。

我怀疑你的其他pyqtgraph导入错误可能是因为你试图安装一个为Python2编写的pyqtgraph版本;pyqtgraph页面声称Python3.x兼容,而使用没有回退的cStringIO将不符合这一要求,所以要么你安装了错误的版本,要么它安装得不正确(例如,如果他们使用单个代码库并2to3-ing it,但你不知何故安装了它而没有2to3-ing it;不知道如何做到这一点)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33604801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档