最近在Ubuntu16.04上跑python版本的R-FCN网络,因为我使用的是anaconda环境,所以在配置caffe和跑程序都出现了各种奇奇怪怪的问题,伴随着这些问题的解决,我发现自己对linux系统的文件之间的关联有了更加深刻的理解。
这次出现的是“TclError: no display name and no $DISPLAY environment variable”错误,根据网上的资料显示,这种问题大都出现在远程链接服务器进行图像显示中,需要对远程连接的环境进行设置,这方面Google上讨论很多了,直接搜索可以得到很多结果,大都大同小异。
还有人认为这是前端的设置问题,通过在脚本中加入
import matplotlib
matplotlib.use('Agg')
或者修改你python文件中的matplotlibrc文件,讲backend一项由TkAgg修改为Agg,虽然这样会使脚本运行不再报错,但是图像将会显示不出来。
经过不断地实验测试,最后发现竟然是环境变量的问题。我在anaconda下使用了conda的多版本环境管理,因为在运行GPU版本caffe时某些文件需要root权限,所以我在运行脚本时加入了sudo python demo.py,
sudo命令会使环境变量重置,而我咋使用env_keep时漏掉了一些环境,为了省事,直接采用sudo visudo命令,修改env_reset为!env_reset,测试运行OK!