如何在Jupyter Notebook中展示PDB文件?遇cStringIO模块缺失报错
解决NGLView在Python3中无法加载MDAnalysis结构的问题
嘿,我帮你梳理了这个报错的根源——你用的nglview 0.4版本是针对Python2开发的,而你当前运行的是Python3.6,Python3已经移除了cStringIO这个模块,换成了io.StringIO,所以才会抛出ModuleNotFoundError。
这里有两种可行的解决办法:
推荐方案:升级NGLView到适配Python3的版本
这是最省心的办法,旧版本的nglview不仅有Python3兼容问题,还可能存在其他bug和功能缺失。打开终端运行以下命令升级:
pip install --upgrade nglview
升级完成后,重启你的Jupyter Notebook,再重新执行代码,应该就能正常显示PDB文件的可视化结果了。
临时方案:手动修改旧版本代码(不推荐长期使用)
如果你暂时不想升级,可以找到报错的文件路径~/anaconda3/lib/python3.6/site-packages/nglview-0.4-py3.5.egg/nglview/__init__.py,定位到第315行的import cStringIO,把它替换成下面的兼容代码:
try: import cStringIO as StringIO except ImportError: import io as StringIO
保存文件后回到Jupyter Notebook重新运行代码,就能绕过这个错误了。
最后提一句:Python2早在2020年就停止官方支持了,现在主流的科学计算库都已经全面适配Python3,建议你尽量使用更新版本的依赖库,能避免很多类似的兼容性坑。
内容的提问来源于stack exchange,提问作者0x90
相关产品推荐
相关产品推荐

