2015-11-09 24 views
1

我有一些問題需要解決。我爲Python 3.2 32bits使用Python 3.2和pyvisa。當我用:PYVISA中的ENUM模塊和cStringIO模塊

import pyvisa 

它顯示:

ImportError: No module named enum 

但是當我使用:

import pyqtgraph, pyvisa 

我得到:

ImportError: No module named cStringIO 

我只想用pyvisa爲GPIB使用Agilent 33250a。

回答

0

在Python 3.4之前,enum module不是Python的一部分,所以3.2太早;你需要升級,或者你需要活着沒有enum(升級對你來說是一個好主意;自那時起,Python的性能和功能已經有了明顯的改進;特別是在性能方面,strings and user defined class instances dramatically reduced their memory overhead)。我猜pyvisa如果它們取決於enum,則會放棄對3.4以前的Python版本的支持。

cStringIO是一個Python 2.x加速器模塊StringIO;在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 - 它;不知道你會怎麼做)。