2014-04-16 2 views
0

우분투에서 Enthought Python Distribution (EPD)의 일부로 Ipython을 사용하고 있습니다. Ipython을 1.1.0-3에서 2.0.0-1로 업그레이드하고 pyzmq를 2.2.0-4에서 14.1.1.-1로 업그레이드 할 때 몇 가지 문제점이 있습니다. 3D scatter 인라이닝 플롯은 ZMQ 내의 부호있는/부호없는 작업으로 인해 실패합니다.우분투에서 Ipython을 업그레이드 한 후 3D scatterplots의 인라이닝이 실패합니다.

코드 예제 :

%matplotlib inline 
import matplotlib.pylab as plt 
from mpl_toolkits.mplot3d import Axes3D 
import random 

fig = plt.figure(figsize = (10,8)) 
ax = fig.add_subplot(111, projection='3d') 
xs,ys, zs = [], [], [] 
for frame_time in range(100): 
    xs.append(random.random()) 
    ys.append(random.random()) 
    zs.append(random.random()) 
ax.scatter(xs, ys, zs) 

Ipython 노트북에서 이것을 실행하려고, 나는 다음과 같은 오류 메시지가 얻을 :

OverflowError : 부호 PY_LONG_LONG에 음의 값을 변환 할 수 없습니다

전체 오류 메시지 :

<mpl_toolkits.mplot3d.art3d.Patch3DCollection at 0x9c0560c> 

--------------------------------------------------------------------------- 
OverflowError        Traceback (most recent call last) 
/home/dsg-labuser/EPD/lib/python2.7/site-packages/IPython/kernel/zmq/pylab    /backend_inline.pyc in show(close) 
41  try: 
42   for figure_manager in Gcf.get_all_fig_managers(): 
---> 43    display(figure_manager.canvas.figure) 
44  finally: 
45   show._to_draw = [] 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/IPython/core/display.pyc in display(*objs, **kwargs) 
133     # kwarg-specified metadata gets precedence 
134     _merge(md_dict, metadata) 
--> 135    publish_display_data('display', format_dict, md_dict) 
136 
137 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/IPython/core/displaypub.pyc in publish_display_data(source, data, metadata) 
172   source, 
173   data, 
--> 174   metadata 
175 ) 
176 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/IPython/kernel/zmq/zmqshell.pyc in publish(self, source, data, metadata) 
86   self.session.send(
87    self.pub_socket, u'display_data', json_clean(content), 
---> 88    parent=self.parent_header, ident=self.topic, 
89  ) 
90 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/IPython/kernel/zmq/session.pyc in send(self, stream, msg_or_type, content, parent, ident, buffers, track, header, metadata) 
644    # use dummy tracker, which will be done immediately 
645    tracker = DONE 
--> 646    stream.send_multipart(to_send, copy=copy) 
647 
648   if self.debug: 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/zmq/sugar/socket.pyc in send_multipart(self, msg_parts, flags, copy, track) 
263   """ 
264   for msg in msg_parts[:-1]: 
--> 265    self.send(msg, SNDMORE|flags, copy=copy, track=track) 
266   # Send the last part without the extra SNDMORE flag. 
267   return self.send(msg_parts[-1], flags, copy=copy, track=track) 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/zmq/backend/cython/socket.so in zmq.backend.cython.socket.Socket.send (zmq/backend/cython/socket.c:5298)() 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/zmq/backend/cython/socket.so in zmq.backend.cython.socket.Socket.send (zmq/backend/cython/socket.c:5146)() 

/home/dsg-labuser/EPD/lib/python2.7/site-packages/zmq/backend/cython/message.so in zmq.backend.cython.message.Frame.__cinit__ (zmq/backend/cython/message.c:1645)() 

OverflowError: can't convert negative value to unsigned PY_LONG_LONG 

어퍼 다운 그레이드 이전 버전의 Ipython을 사용하면 문제가 해결되었습니다. 그래서 우분투에는 Ipython 2.0.0-1에 약간의 문제가있는 것으로 보입니다.

감사합니다.

+0

pyzmq 버전 변경 또는 그냥 IPython 버전을합니까 위의 패치를 적용하고 설치? 나는 이것이 pyzmq에 특정한 것으로 기대할 것이다. – minrk

+0

@minrk : 필자는 IPython과 pyzmq가이 문제가 발생했을 때 updatet이었을 것이라고 생각합니다. – user3540594

+0

'nosetests zmq'의 테스트 결과를 확인할 수 있습니까? – minrk

답변

0

이것은 32b 파이썬에서 pyzmq ≥ 14.0의 버그입니다. 앞으로 수일 내에 pyzmq-14.2에서 릴리스되어야하는 this PR으로 수정해야합니다. 즉시 해결 방법은 다음과 같습니다

  • 사용 (64B)의 파이썬,
  • 사용 pyzmq 가능하면 13
  • 수동 pyzmq