

【症状】  
bash on windows で anaconda3 をインストールして matplotlib のデモファイル
[dete_demo.py](http://matplotlib.org/examples/api/date_demo.html)
を走らせるとエラーが出ます。

【行った手順】  
● lxrun /uninstall , lxrun /install  
● bash Anaconda3-4.2.0-Linux-x86_64.sh  
● python -V # Python 3.5.2 :: Anaconda 4.2.0 (64-bit)  
● python date_demo.py ## 別記エラー１

【行った対応】  
No module named 'PyQt4' とあったので PyQt4 をインストールしなくてはならないのか？？  
● conda list | grep pyqt ## pyqt 5.6.0 py35_0  
● conda list | grep PyQt4 ## なし  
● conda search PyQt4 ## なし  
● pip search PyQt4 ## PyQt4 (4.11.4) がlist内にあった  
● pip install PyQt4 ## 別記エラー２  
● pip install --upgrade pip  
● pip install PyQt4 ## 別記エラー３

以上３回行いましたが同じ症状でした

何かしらのヒントやアドバイスがありましたらお願いいたします。

※ Windows版 anaconda3 では正しくグラフが表示されます。

【追記、その後行った事】  
[stackoverflow.com
にて同じ症状に対するページがありました。](https://github.com/ContinuumIO/anaconda-
issues/issues/1068)  
pyqt5 が原因なのか・・・?  
最下段の対応策を行いました。

[code]

    conda install -y pyqt=4.11
    
[/code]

これで PyQt4 に対するエラーはなくなりましたが

新たに libSM.so.6 エラーが発生しました。  
[これも stackoverflow.com
にて同じ症状](https://github.com/conda/conda/issues/1051)に対するページがあったので対応策を実行しました。

[code]

    apt-get install libsm6 libxrender1 libfontconfig1
    
[/code]

これで前記のエラーはなくなりましたが

また RuntimeError: Invalid DISPLAY variable が出てきました。orz

Display表示ができない状態なので超目先の対応としてグラフを画像として保存することにしました。  
※ date_demo.py 修正コード 参照

しかし、画像が保存されません。 (涙) orz ※ Windows版では同じコードで画像保存されます。

今ここまで ・・・

(別記エラー１)

[code]

    $ python date_demo.py
    Traceback (most recent call last):
    File "date_demo.py", line 16, in <module>
      import matplotlib.pyplot as plt
    File "/mnt/c/Users/Admin/.BashHome/anaconda3/lib/python3.5/site-packages/matplotlib/pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
    File "/mnt/c/Users/Admin/.BashHome/anaconda3/lib/python3.5/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
    File "/mnt/c/Users/Admin/.BashHome/anaconda3/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py", line 16, in <module>
      from .backend_qt5 import QtCore
    File "/mnt/c/Users/Admin/.BashHome/anaconda3/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py", line 31, in <module>
      from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, __version__
    File "/mnt/c/Users/Admin/.BashHome/anaconda3/lib/python3.5/site-packages/matplotlib/backends/qt_compat.py", line 137, in <module>
      from PyQt4 import QtCore, QtGui
    ImportError: No module named 'PyQt4'
    
[/code]

(別記エラー２)

[code]

    $ pip install PyQt4
    Collecting PyQt4
    Could not find a version that satisfies the requirement PyQt4 (from versions: )
    No matching distribution found for PyQt4
    You are using pip version 8.1.2, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    
[/code]

（別記エラー３）

[code]

    $ pip install PyQt4 
    Collecting PyQt4
    Could not find a version that satisfies the requirement PyQt4 (from versions: )
    No matching distribution found for PyQt4
    
[/code]

date_demo.py 修正コード

[code]

    #!/usr/bin/env python
    
    import datetime
    import numpy as np
    import matplotlib as mpl            ## 加筆
    mpl.use('Agg')                      ## 加筆
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import matplotlib.cbook as cbook
    
    years = mdates.YearLocator()   # every year
    months = mdates.MonthLocator()  # every month
    yearsFmt = mdates.DateFormatter('%Y')
    
    datafile = cbook.get_sample_data('goog.npy')
    try:
        r = np.load(datafile, encoding='bytes').view(np.recarray)
    except TypeError:
        r = np.load(datafile).view(np.recarray)
    
    fig, ax = plt.subplots()
    ax.plot(r.date, r.adj_close)
    
    ax.xaxis.set_major_locator(years)
    ax.xaxis.set_major_formatter(yearsFmt)
    ax.xaxis.set_minor_locator(months)
    
    datemin = datetime.date(r.date.min().year, 1, 1)
    datemax = datetime.date(r.date.max().year + 1, 1, 1)
    ax.set_xlim(datemin, datemax)
    
    def price(x):
        return '$%1.2f' % x
    ax.format_xdata = mdates.DateFormatter('%Y-%m-%d')
    ax.format_ydata = price
    ax.grid(True)
    
    fig.autofmt_xdate()
    
    fig.savefig('date_demo.py.png')    ## 加筆
    
    # plt.show()    ## コメントアウト
    
[/code]

【環境】  
WIndows 10  
bash on windows  
anaconda3-4.2.0

[code]

    $ conda info
    Current conda install:
    
                   platform : linux-64
              conda version : 4.2.13
           conda is private : False
          conda-env version : 4.2.13
        conda-build version : 2.0.2
             python version : 3.5.2.final.0
           requests version : 2.11.1
           root environment : /mnt/c/Users/Admin/.BashHome/anaconda3  (writable)
        default environment : /mnt/c/Users/Admin/.BashHome/anaconda3
           envs directories : /mnt/c/Users/Admin/.BashHome/anaconda3/envs
              package cache : /mnt/c/Users/Admin/.BashHome/anaconda3/pkgs
               channel URLs : https://repo.continuum.io/pkgs/free/linux-64
                              https://repo.continuum.io/pkgs/free/noarch
                              https://repo.continuum.io/pkgs/pro/linux-64
                              https://repo.continuum.io/pkgs/pro/noarch
                config file : None
               offline mode : False
    
[/code]


CC BY-SA 3.0
2016-11-23T06:10:25.400
30612
2017-03-11T14:41:47.597
2017-03-11T14:41:47.597
8000
19605
question
python windows-10 matplotlib anaconda wsl
bash on windows で anaconda3 をインストールして import matplotlib.pyplot するとエラーになる


2016/11/26 時点で質問に下記の報告がありました。

* * *

自己解決したので同じ症状の方のために書き残しておきたいと思います。

● anaconda3 インストール  
● conda install nomkl  
● sudo apt-get install x11-apps  
● Windows 10 にて [xming](https://osdn.jp/projects/sfnet_xming/) をインストールして
Xming.exe 起動

テストコード

[code]

    import matplotlib as mpl
    mpl.use('tkagg')
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(-3, 3, 0.1)
    y = np.sin(x)
    plt.plot(x, y)
    plt.savefig('test.png')
    plt.show()
    
[/code]

PyQt4 エラーは解決していませんが、 matplotlib でグラフの画像保存と表示ができるようになりました。


CC BY-SA 3.0
2016-12-12T07:21:37.977
31094
2017-03-11T14:35:47.187
2017-03-11T14:35:47.187
8000
3054
30612
answer