2020-09-18

Spyder on WSL1 + Ubuntu-18.04

Spyder を使ってみようと、WSL1 + Ubuntu-18.04 + Anaconda3 環境で Spyder を起動するも、エラーで起動せず。前提として、X11 周りは問題なく動いている。

user@MYPC:~$ echo $WSL_DISTRO_NAME
Ubuntu-18.04

user@MYPC:~$ conda activate

(base) user@MYPC:~$ conda list --full-name anaconda
# packages in environment at /home/user/anaconda3:
#
# Name                    Version                   Build  Channel
anaconda                  2020.07                  py38_0

(base) user@MYPC:~$ spyder
Traceback (most recent call last):
  File "/home/user/anaconda3/bin/spyder", line 11, in <module>
    sys.exit(main())
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/start.py", line 201, in main
    from spyder.app import mainwindow
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/mainwindow.py", line 71, in <module>
    from qtpy.compat import from_qvariant
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/compat.py", line 15, in <module>
    from .QtWidgets import QFileDialog
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/QtWidgets.py", line 22, in <module>
    from PyQt5.QtWidgets import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

「libGL.so.1」が無いと言っているので、apt-file でパッケージを探す。

(base) user@MYPC:~$ apt-file search libGL.so.1
libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1
libgl1: /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
nvidia-340: /usr/lib/i386-linux-gnu/libGL.so.1
nvidia-340: /usr/lib/x86_64-linux-gnu/libGL.so.1
primus-libs: /usr/lib/x86_64-linux-gnu/primus/libGL.so.1
virtualbox-guest-x11: /usr/lib/virtualbox/additions/libGL.so.1
virtualbox-guest-x11-hwe: /usr/lib/virtualbox/additions/libGL.so.1

「libgl1」を入れて、リトライ。

(base) user@MYPC:~$ sudo apt install --no-install-recommends libgl1
<...snip...>

(base) user@MYPC:~$ spyder
Traceback (most recent call last):
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/QtWebEngineWidgets.py", line 22, in <module>
    from PyQt5.QtWebEngineWidgets import QWebEnginePage
ImportError: libXtst.so.6: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/anaconda3/bin/spyder", line 11, in <module>
    sys.exit(main())
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/start.py", line 201, in main
    from spyder.app import mainwindow
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/mainwindow.py", line 84, in <module>
    from qtpy import QtWebEngineWidgets  # analysis:ignore
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/QtWebEngineWidgets.py", line 26, in <module>
    from PyQt5.QtWebKitWidgets import QWebPage as QWebEnginePage
ModuleNotFoundError: No module named 'PyQt5.QtWebKitWidgets'

別のエラーが出た。ここでは最終行ではなく、4 行目のエラーが重要。「libXtst.so.6」が無いと言っているので、同様にして「libxtst6」を入れる。

(base) user@MYPC:~$ apt-file search libXtst.so.6
libxtst6: /usr/lib/x86_64-linux-gnu/libXtst.so.6
libxtst6: /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0

(base) user@MYPC:~$ sudo apt install --no-install-recommends libxtst6
<...snip...>

(base) user@MYPC:~$ spyder
Traceback (most recent call last):
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/QtWebEngineWidgets.py", line 22, in <module>
    from PyQt5.QtWebEngineWidgets import QWebEnginePage
ImportError: libXss.so.1: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/anaconda3/bin/spyder", line 11, in <module>
    sys.exit(main())
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/start.py", line 201, in main
    from spyder.app import mainwindow
  File "/home/user/anaconda3/lib/python3.8/site-packages/spyder/app/mainwindow.py", line 84, in <module>
    from qtpy import QtWebEngineWidgets  # analysis:ignore
  File "/home/user/anaconda3/lib/python3.8/site-packages/qtpy/QtWebEngineWidgets.py", line 26, in <module>
    from PyQt5.QtWebKitWidgets import QWebPage as QWebEnginePage
ModuleNotFoundError: No module named 'PyQt5.QtWebKitWidgets'

しつこい。同様に「libxss1」を入れる。

(base) user@MYPC:~$ apt-file search libXss.so.1
libxss1: /usr/lib/x86_64-linux-gnu/libXss.so.1
libxss1: /usr/lib/x86_64-linux-gnu/libXss.so.1.0.0
libxss1-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libXss.so.1.0.0

(base) user@MYPC:~$ sudo apt install --no-install-recommends libxss1
<...snip...>

(base) user@MYPC:~$ spyder
Update LANGUAGE_CODES (inside config/base.py) if a new translation has been added to Spyder
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-user'
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libpng warning: bKGD: invalid
libpng warning: bKGD: invalid
libpng warning: bKGD: invalid
libpng warning: bKGD: invalid

ようやく起動した。「libGL error:」は、下記の環境変数を export すれば消すことができる。

export LIBGL_ALWAYS_INDIRECT=1

「libpng warning:」の方は、たぶん Spyder が使っている PNG 画像の方の問題で、無視しても問題ないはず。どうしても気になるなら、下記を参考にすれば消せるかもしれない。