如何解决从 Jupyter Lab 调用使用“import()”的 .py 脚本会抛出 UnicodeDecodeError
我在脚本 (IBAsset
) 中实现了一个类 (assets.py
)。属性 IBAsset.daily_returns
使用 python 的 import()
模块来请求用户输入。只要我从 IPython 控制台创建 IBAsset
实例,它就一切正常,并且通过控制台提示我进行输入。但是,一旦我从 Jupyter Lab 中创建了 IBAsset
实例,我就会得到以下 UnicodeDecodeError
:
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-4-56b6b5771106> in <module>
1 from paulfolio.assets import IBAsset
2 asset = IBAsset(symbol='IEMG',secType='STK',exchange='NYSE')
----> 3 asset.daily_returns
~/paulfolio/paulfolio/assets.py in daily_returns(self)
206 if self._historical_data is None:
207 if input(
--> 208 f"Historical data for {self.identifier} has not been fetched - Fetch Now?\n(y/n): "
209 ).lower() in ['yes','y']:
210 self._fetch_data()
/usr/local/lib/python3.7/site-packages/ipykernel/kernelbase.py in raw_input(self,prompt)
858 self._parent_ident,859 self._parent_header,--> 860 password=False,861 )
862
/usr/local/lib/python3.7/site-packages/ipykernel/kernelbase.py in _input_request(self,prompt,ident,parent,password)
869 while True:
870 try:
--> 871 self.stdin_socket.recv_multipart(zmq.NOBLOCK)
872 except zmq.ZMQError as e:
873 if e.errno == zmq.EAGAIN:
/usr/local/lib/python3.7/site-packages/zmq/sugar/socket.py in recv_multipart(self,flags,copy,track)
564 for any of the reasons :func:`~Socket.recv` might fail
565 """
--> 566 parts = [self.recv(flags,copy=copy,track=track)]
567 # have first part already,only loop while more to receive
568 while self.getsockopt(zmq.RCVMORE):
zmq/backend/cython/socket.pyx in zmq.backend.cython.socket.socket.recv()
zmq/backend/cython/socket.pyx in zmq.backend.cython.socket.socket.recv()
zmq/backend/cython/socket.pyx in zmq.backend.cython.socket._recv_copy()
zmq/backend/cython/socket.pyx in zmq.backend.cython.socket._recv_copy()
/usr/local/lib/python3.7/site-packages/zmq/backend/cython/checkrc.pxd in zmq.backend.cython.checkrc._check_rc()
/usr/local/lib/python3.7/site-packages/zmq/error.py in __init__(self,errno,msg)
100 def __init__(self,errno='ignored',msg='ignored'):
101 from zmq import EAGAIN
--> 102 super(Again,self).__init__(EAGAIN)
103
104
/usr/local/lib/python3.7/site-packages/zmq/error.py in __init__(self,msg)
41 self.errno = errno
42 if msg is None:
---> 43 self.strerror = strerror(errno)
44 else:
45 self.strerror = msg
zmq/backend/cython/error.pyx in zmq.backend.cython.error.strerror()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 37: invalid start byte
assets.py:
@property
def daily_returns(self) -> pd.Series:
if self._historical_data is None:
if input(
f"Historical data for {self.identifier} has not been fetched - Fetch Now?\n(y/n): "
).lower() in ['yes','y']:
self._fetch_data()
else:
raise Exception('Historical data has not been fetched!')
return self._compute_asset_prices_and_returns(
historical_data=self._historical_data,nb_offset_days=1
)[1]
Jupyter Notebook(Jupyter 实验室):
from assets import IBAsset
asset = IBAsset(symbol='IEMG',exchange='NYSE')
asset.daily_returns
我正在使用 python 3.7.9 和以下 Jupyter 依赖项 开发一个 dockerized Ubuntu 18.04 容器:
jupyter core : 4.7.0
jupyter-notebook : 6.1.5
qtconsole : not installed
ipython : 7.19.0
ipykernel : 5.4.2
jupyter client : 6.1.7
jupyter lab : 2.2.9
nbconvert : 6.0.7
ipywidgets : 7.5.1
nbformat : 5.0.8
traitlets : 5.0.5
非常感谢任何帮助!
干杯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。