2015-04-03 225 views
59

我正在虛擬環境中使用燒瓶。我能夠用pip安裝matplotlib,並且我可以在Python會話中使用import matplotlib。然而,當我導入爲無法在virtualenv中導入「matplotlib.pyplot as plt」

matplotlib.pyplot as plt 

我得到以下錯誤:

>>> import matplotlib.pyplot as plt 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in <module> 
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() 
    File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup 
    globals(),locals(),[backend_name],0) 
    File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py", line 24, in <module> 
    from matplotlib.backends import _macosx 
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. 

我感到困惑,爲什麼要求我先安裝Python的框架。它不存在嗎? 「將Python安裝爲框架」意味着什麼,以及如何安裝它?

+0

你在做什麼操作系統? – 2016-06-29 04:12:19

+0

這是MacOS。我相信它是10.6。 – Rohit 2016-06-29 15:22:59

回答

135

solution爲我工作。如果你已經在使用PIP在虛擬環境中安裝matplotlib,您只需鍵入以下內容:

$ cd ~/.matplotlib 
$ nano matplotlibrc 

,然後在那裏寫backend: TkAgg。 如果您需要更多信息,請轉到解決方案鏈接。

+0

好又容易。非常感謝! – 2016-06-24 01:14:08

+33

單行:'echo「後端:TkAgg」>〜/ .matplotlib/matplotlibrc'或'echo「後端:Agg」>〜/ .matplotlib/matplotlibrc' – msanford 2016-07-13 21:57:38

+0

作品非常感謝 – Oliver 2017-03-07 15:53:56

13

當我使用pip安裝matplotlib時,我遇到了類似的問題。默認情況下,它安裝了1.5.0的最新版本。但是,我有另一個Python 3.4和matplotlib 1.4.3的虛擬環境,當我導入matplotlib.pyplot時,這個環境工作正常。因此,我用下面安裝matplotlib的早期版本:

cd path_to_virtual_environment # assume directory is called env3 
env3/bin/pip install matplotlib==1.4.3 

我知道這只是一個變通,但它的工作對我來說是一個短期修復。

+0

這對我來說很好。謝謝。 – Ankur 2017-11-29 23:23:45

+0

謝謝!我喜歡這個答案! – Hanfeng 2018-01-02 14:02:09

+0

對我來說,我有一個python 2.7 pyenv環境,其中matplotlib == 2.1.0和python 3.6以及matplotlib == 2.1.1。我將2.7的matplotlib升級到2.1.1,問題得到解決。 – bajafresh4life 2018-01-03 21:47:05

0

儘管大多數答案似乎指向修補activate腳本以使用系統python,但我無法讓它工作,並且對我來說一個簡單的解決方案 - 儘管有點小巧 - 是將matplotlib安裝到全局環境中,並且使用它來代替virtualenv實例。您可以通過使用--system-site-packages標誌(如virtualenv --system-site-packages foo)創建virtualenv來執行此操作,也可以在安裝pip時使用通用標誌,如pip install -U matplotlib

4

您可以通過使用後端Agg

轉到User/yourname/.matplotlib和打開/創建matplotlibrc修復此問題並添加以下行backend : Agg,它應該爲你工作。

27

我得到了同樣的錯誤,並試圖Jonathan的回答是:

You can fix this issue by using the backend Agg

Go to User/yourname/.matplotlib and open/create matplotlibrc and add the following line backend : Agg and it should work for you.

我運行的程序,沒有錯誤,也沒有情節,我試圖backend: Qt4Agg, 它打印出來,我的天堂「沒有安裝PyQt4。

然後我嘗試了另一個後端:backend: TkAgg,它的工作原理!

所以,也許我們可以嘗試不同的後端,有些可能會工作或安裝像PyQt4這樣的需求包。

這裏是一個示例python片段,你可以嘗試和測試matplotlib。

import matplotlib 

matplotlib.use('TkAgg') 
import matplotlib.pyplot as plt 

plt.plot([1, 2, 3], [0, 3, 7]) 
plt.show() 
+0

我正在使用macOS high sierra,當我使用TkAgg時,它顯示我沒有安裝tkinter軟件包。當我使用Qt4Agg或Qt5Agg時,它顯示我沒有安裝PyQt。如果我使用'brew install pyqt'安裝PyQt,這並沒有幫助。最後,我必須將它安裝在virtualenv中,「激活virtualenv,然後'pip安裝PyQt5'」。這工作。 – nngeek 2017-11-21 01:57:17

6

如果你不希望設置一個.matplotib/matplotlibrc配置文件,您可以通過設置在運行時'Agg'後端進口matplotlib後,進口matplotlib.pyplot前右繞過這個問題:

In [1]: import matplotlib 

In [2]: matplotlib.use('Agg') 

In [3]: import matplotlib.pyplot as plt 

In [4]: fig, ax = plt.subplots(1, 1) 

In [5]: import numpy as np 

In [6]: x = np.linspace(-1., 1.) 

In [7]: y = np.sin(x) 

In [8]: ax.plot(x, y) 
Out[8]: [<matplotlib.lines.Line2D at 0x1057ecf10>] 

In [9=]: fig.savefig('myplot.png') 

enter image description here

0

一干淨而簡單的解決方案是創建一個內核,將PYTHONHOME設置爲'VIRTUAL_ENV`,然後使用系統Python可執行文件(而不是virtualenv中的文件)。

如果要自動創建此類內核,可以使用jupyter-virtualenv-osx腳本。

相關問題