请考虑以下带有内核命令行界面的对话框:
$ math Mathematica 6.0 for Linux x86 (32-bit) In[1]:= p = Plot[x^2, {x,-1,1}] Out[1]= -Graphics- In[2]:= Export["foo.png", p] Out[2]= foo.png
这在一台机器上工作正常$Version = 6.0 for Linux x86 (32-bit) (June 2, 2008)
但在$Version = 7.0 for Linux x86 (64-bit) (November 11, 2008)
具有以下错误的机器上失败:
Export::nofe: A front end is not available; export of PNG requires a front end.
我可以想到任何其他图像格式的类似错误.
所以问题是,我怎样才能获得Mathematica内核,没有前端,导出图像?为什么它在Mathematica 6.0中顺利运行?如果以上示例适用于版本7,请告诉我们!
PS:版本7引入了该功能,UsingFrontEnd
但失败了
Developer`UseFrontEnd::nofestart: Unable to launch a front end. Proceeding without a front end.
大概是因为机器上没有安装X11.
事实证明,在这方面版本6和版本7之间没有区别.相反,在版本为6的机器上,前端正在静默调用.正如这个问题的答案所表明的那样,另一台机器的问题是没有X服务器,因此无法调用前端.
您需要一个前端来从MathKernel导出图形.图形的渲染完全由前端覆盖.没有前端,您没有要导出的图形.没有解决方法.
如果你有一个工作前端,你可以做的是使用:
UseFrontEnd[Export[filename,graphics]]
这将从终端调用前端,允许您导出图形.
要在没有安装X服务器和Windows管理器的Linux机器上安装工作前端,您有以下选择:
使用其他机器的X显示器.参见例如http://www.hungry.com/~jamie/xexport.html.基本上它归结为设置环境变量export DISPLAY=machine_address:0.0
或在每个执行选项期间传递-display machine_address:0.0
.
本地安装Xvfb,这是一个X服务器帧缓冲区.它非常简单易用.参见例如Xvfb上的维基百科条目.您可以在运行Xvfb时设置X显示Xvfb :display_nr &
,然后像以前的选项一样使用它.