使用Anaconda安装的GraphLab Create中SFrame.show()函数执行报错
解决GraphLab Create中show()函数的AttributeError问题
我之前在Anaconda环境里用GraphLab Create的时候也碰到过一模一样的问题——SFrame的导入、数据处理都正常,唯独调用show()就报这个AttributeError: 'NoneType' object has no attribute 'add_variable',本质原因是show()依赖的本地可视化服务端口被占用,导致服务启动失败,给你几个亲测有效的解决办法:
指定未被占用的端口调用show()
直接在show()里手动指定一个可用端口,比如选8889(避开Jupyter默认的8888):sf.show(port=8889)要是这个端口还是不行,换个其他的比如9999、12345之类的,一般都能解决。
检查并释放被占用的默认端口
如果你想揪出到底哪个程序占了端口,可以用命令行排查:- Windows系统:打开cmd,输入
netstat -ano | findstr :9996(GraphLab默认端口是9996),找到对应的PID,然后用taskkill /F /PID <查到的PID>杀掉进程。 - Mac/Linux系统:打开终端,输入
lsof -i :9996,找到PID后用kill -9 <查到的PID>终止进程。
- Windows系统:打开cmd,输入
提前配置GraphLab的服务端口
在调用show()之前,先设置GraphLab的运行时配置,指定固定端口:import graphlab graphlab.set_runtime_config('GRAPHLAB_SERVER_PORT', 8890) sf.show()重启Python Kernel/conda环境
有时候是环境里的临时进程冲突,重启Jupyter的Kernel,或者先退出当前conda环境再重新激活:conda deactivate conda activate <你的GraphLab环境名>
简单说下报错逻辑:show()会在本地启动一个小型Web服务来展示可视化内容,如果默认端口被占用,这个服务启动失败就会返回None,后续代码尝试调用add_variable自然就会报错啦。
内容的提问来源于stack exchange,提问作者Jessie
相关产品推荐
相关产品推荐

