【问题标题】:Using matplotlib on headless Ubuntu 14.04 Server在无头 Ubuntu 14.04 服务器上使用 matplotlib
【发布时间】:2015-01-04 18:54:42
【问题描述】:

我有一个使用 SSH 远程连接的无头 Ubuntu 14.04 服务器。我想使用 matplotlib 并在 ssh 客户端上显示绘图。例如,我会使用:

ssh -X name@server.com

然后从 Python 控制台,我希望它在窗口中生成一个图:

import matplotlib.pyplot as plt
plt.plot(range(10))
plt.show()

我已经在我的 virtualenv 中安装了 matplotlib,我运行了sudo apt-get install python-gtk2,但情节仍然没有出现。我想我错过了很多包裹。我可以安装一组相当少的 X 相关软件包来完成这项工作?我不想安装ubuntu-desktop

【问题讨论】:

  • 这不是同一个问题。我明确希望使用 X 后端,而另一个问题的接受答案可以解决该要求。
  • 对不起,另一个问题经常出现,我的模式匹配过于激进。您可以启动其他 gui 程序吗?您是否在远程机器上运行了 xserver?
  • 感谢您取消标记!在对与 x 相关的软件包进行了一些试验和错误之后,我可以让 xeyes 在 ssh 上运行。问题似乎是当我pip install matplotlib时,它没有识别出安装了pygtk。因此,唯一安装的后端是 agg。问题可能是 pygtk 是在站点范围内安装的,而不是在我的 venv 中,但我为此 venv 启用了站点包。因此,import pygtk 工作正常。但是 pip 安装程序似乎没有意识到我已经安装了它。
  • @10flow - 在您的特定情况下,自动检测要构建的后端可能相当古怪。一种解决方法是在构建 matplotlib 时手动指定所需的后端。您需要下载源代码(例如 tarball)并手动构建(或使用带有 gui 后端的预构建的东西,如 anaconda/canopy)。要指定后端,cp setup.cfg.templatesetup.cfg 并相应地编辑它(文件本身有大量文档)。此外,如果它无法构建 gtk 后端,您将获得更多信息错误,而不仅仅是跳过它。

标签: python ubuntu ssh matplotlib


【解决方案1】:

我让它在 Ubuntu 14.04.1 服务器上运行,但它很痛苦!棘手的部分肯定是 virtualenv。我终于幸运地使用了 Qt4 后端,我只能通过 Ubuntu 软件包安装它,然后不得不将它符号链接到我的 virtualenv 中。所以这里是一步一步的过程......

首先安装 pre-reqs 并将 PyQt4 破解到您的 virtualenv 中:

$ sudo apt-get install xauth x11-apps python-qt4 
$ ln -s /usr/lib/python2.7/dist-packages/PyQt4 /path/to/myvenv/lib/python2.7/PyQt4

现在手动下载并安装 SIP (http://www.riverbankcomputing.com/software/sip/intro) 并激活您的 venv,如下所示:

$ tar xzf sip-4.16.4.tar.gz
$ cd sip-4.16.4
$ python configure.py
$ make
$ sudo make install

接下来,下载matplotlib源码包并修改设置配置,强制安装Qt4后端:

$ tar xzf matplotlib-1.4.2.tar.gz
$ cp matplotlib-1.4.2/setup.cfg.template matplotlib-1.4.2/setup.cfg

现在在第 68 行附近编辑 setup.cfg 以阅读:

qt4agg = True 

Matplotlib 现在将干净地安装在您的 venv 中:

$ pip install -e matplotlib-1.4.2/

现在您可以使用-X 标志进行 SSH,并且绘图将远程加载!

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 2015-07-23
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2016-12-08
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多