24

我在 virtualenv 中成功安装了 matplotlib。现在我正试图让它画出来。我知道如何更改后端,但是在弄清楚将其更改为什么时遇到了很多麻烦。

有没有人设法让它完全与 python3 一起工作?如果是,如何?

我已经尝试了很多东西。我已经循环浏览了所有后端以查看所有投诉是什么,而不是我试图让其中一个工作。

另外可能值得注意的是,我的目标是将它集成到 Pyramid 应用程序中。

以下是迄今为止所有不同后端发生的情况:

  • Agg:这是默认后端。它不画
  • GTK:需要 pygtk 显然尚未移植到 python3
  • GTKAgg:同上
  • GTKCairo:说“必需的包 gtk”假设类似于上述内容
  • FltkAgg:看起来没有 python3 版本。尽管它在 python3 UI FAQ 中被提及。我想那只是一个刺激。天哪
  • MacOSX:我正在运行 ubuntu。假定不适当
  • QtAgg:需要 pyqt。见 Qt4Agg
  • Qt4Agg:请参阅在 virtualenv 中安装 PyQt4
  • TkAgg:ImportError:无法导入名称 _tkagg。我可以在解释器中运行 import tkinter,所以我还不确定是什么坏了
  • WX: ImportError: Matplotlib backend_wx and backend_wxagg require wxversion,没找到
  • WXAgg:同上
  • CocoaAgg:ImportError:CococaAgg 后端需要安装 PyObjC!
  • GTK3Cairo : ImportError: GTK3 后端需要安装 pygobject。我尝试安装它,但是当我尝试使用正确的 python 配置它时,它抱怨缺少标头
  • GTK3Agg:没有名为 cairo 的模块。但我认为我会遇到与上述相同的问题
  • cairo:Cairo 后端要求安装 pycairo
  • emf:必须先从http://pyemf.sf.net安装 pyemf 。看起来它应该做 windowsey 的东西所以这可能不是一个好的选择
  • gdk:没有名为 gobject 的模块
  • pdf:运行但不绘制
  • pgf:同上
  • ps:同上
  • svg: 同上
  • 模板:同上。

我用来测试后端的脚本是:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

到目前为止,我已经花了太多时间试图让 python3.2 和 qt4 玩得很好,而且我似乎每次转身都遇到了问题。因此,我不想继续我的反复试验方法,而是想问:

  1. Python3.2 和 Pyramid 的最佳选择是什么?
  2. 我该如何实现?

与此同时,我将继续试错,并随时更新我的​​问题。

关于我正在尝试的东西的注释

对于 TkAgg:

由于 tkinter 正确导入,我假设它已正确安装(如果我错了,我想有办法测试它吗?)。这家伙http://ask.sagemath.org/question/626/sage-python-import-matplotlib-no-module-named有类似的问题,但我确定他的设置与我的不同。解决方案是在 python3.2 站点包目录的内部找到 tkagg.py 并编辑有问题的导入语句。我发现很难相信 matplotlib 的交付失败了(而且我无法运行建议的修改后的代码......)

对于 WX 的东西:

wxPython for Python 3表示尚不支持 python3。wxPython 在他们的网站上也没有提到 python3,所以我想这是不行的。用完了选项:/

可可:

同上:在 Python 3 中编写 Cocoa 应用程序

电磁场:

同上: http: //pyemf.sourceforge.net/README.html

4

5 回答 5

15

我遇到了完全相同的问题,但经过大量努力,我设法使 TkAgg 正常工作(这导致了 _tkagg 的导入错误)。有点晚了,但有人可能会发现它很有用。

FWIW我解决了如下问题(使用TkAgg):

  • tk-dev从包管理器安装
  • python3-tk从包管理器重新安装
  • matplotlib从源代码重建和重新安装
  • (当然在 matplotrc 中设置 TkAgg)

如果你认为你已经正确安装,你需要重建tk-dev重新安装 matplotlib,以便它在你的目录中生成。python3-tk_tkagg.pybackends

我在 LM14 上使用 Python3.3 (numpy 1.7)。但我认为它应该适用于 Ubuntu/Python3.2

于 2013-04-10T08:20:36.270 回答
2

我一直在做 python 3.3.2 和 matplotlib 的源代码构建。如上所述,TkAgg 有效。如果您从源代码构建所有内容:

  1. sudo apt-get install tk-dev
  2. 重建 python3 (make clean; ./configure; make)
  3. 清理 matplotlib(从 virtualenv 中删除 egg,从 ~/.config/matplotlib 中删除缓存对象)
  4. 从源代码重建 matplotlib (rm -r build/; python setup.py build; python setup.py install)

终于看到那个愚蠢的盒子弹出了我的 x=y 行。

小时....

于 2013-07-29T03:42:20.677 回答
1

Matplotlib 的1.2.x 版本似乎朝着 Python 3 迈出了一大步。matplotlib 1.2.0rc2 (+ numpy 1.7.0b2) 正在为我工​​作

  • Python 3.2.2(Linux Mint 12 上的虚拟环境)
  • Python 3.3.0(从源代码本地安装)

在这两种情况下,matplotlib 都将“TkAgg”报告为使用的后端。

不幸的是,我不知道这是否/如何与 Pyramid 一起工作。

于 2012-10-24T08:57:10.387 回答
0

我写了一个答案,以确保matplotlib在 Ubuntu 16.04 的 Python 3 virtualenv 中使用https://askubuntu.com/a/785506/15003TkAgg的后端,这在这里很有用。结果是安装,激活virtualenv并在virtualenv中重新安装:tk-devmatplotlib

sudo apt install tk-dev
source venv/bin/activate
pip --no-cache-dir install -U --force-reinstall matplotlib

python -c 'import matplotlib as mpl; print(mpl.get_backend())'现在应该说TkAgg

于 2016-06-11T04:20:30.747 回答
0

对我来说,以下工作:

  • 停用,
  • sudo apt-get install python3-matplotlib libfreetype6-dev
  • (激活 virtualenv) 源 /home/...,
  • pip install numpy matplotlib(如果您已经拥有它,可以卸载然后安装,或者此时尝试创建一个新的 venv)
  • pip install --upgrade pipvenv 内部也可能会有所帮助(出于某种我不知道的原因),就像我安装 scipy 时一样。

它现在使用 virtualenv 进行绘图。

$ lsb_release -a (gives..)

Ubuntu 14.04.5 LTS

于 2018-01-29T15:06:13.140 回答