環境
- Windows11 Pro 23H2
- WSL2
- Ubuntu-22.04
- Docker Desktop 4.36.0
- Docker version 27.3.1, build ce12230
- Spyder IDE 6.0.1
- (Spyder IDEの表示)Python 3.12.7 64-bit | Qt 5.15.2 | PyQt5 5.15.10
Linux 5.15.133.1-microsoft-standard-WSL2 (x86_64)
概要
Spyderを利用するAnaconda環境の構築にトライしたらハマったので、まずはminicondaでSpyderだけ動かせるようにした。
前段階
WSL2およびDockerのインストールについては省略。
Dockerのバージョンには注意!
今回はDocker-CEでなくDocker(商用利用は有料)を使用している。
環境変数の変更
display.sh
#!/bin/bash
# DISPLAYの値を変更
echo 'export DISPLAY=:0.0' >> ~/.profile
# 再読み込み
source ~/.profile
を参考に設定。WSLgを利用するのでVcXsrvのインストールは不要。
display.shを実行
$ source ./display.sh
普通のシェルスクリプトではなく source
を使わないと再読み込みが行われない。
値が変わっていることを確認
$ echo $DISPLAY
:0.0
コンテナをビルド
Dockerfile
# ベースイメージ
FROM continuumio/miniconda3
# アップデート
RUN apt-get update
# 必要なツールのインストール
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \
libx11-dev libxext6 libxcb1 libxrender1 libxrandr2 libxi6 \
libfreetype6 libxinerama1 libxcursor1 \
libxcb-shm0 libqt5gui5 libqt5widgets5 \
libxcb-icccm4 libxcb-icccm4-dev \
libxcb-xinerama0 libxcb-xinerama0-dev \
libxcb-util1 libxcb-util-dev \
libxcb-keysyms1 libxcb-keysyms1-dev \
libxcb-render0 libxcb-render0-dev \
libxcb-shape0 libxcb-shape0-dev \
libxcb-shm0 libxcb-shm0-dev \
libxcb-xfixes0 libxcb-xfixes0-dev \
libxkbcommon-x11-0 libxkbcommon-x11-dev \
libpci3 \
libgl1-mesa-glx libgl1-mesa-dri libglu1-mesa \
libasound2 \
x11-apps && \
apt-get clean
# 環境変数の設定
ENV QT_QPA_PLATFORM=xcb \
QT_PLUGIN_PATH=/home/user/.local/lib/python3.12/site-packages/PyQt5/Qt5/plugins \
QT_QPA_PLATFORM_PLUGIN_PATH=/home/user/.local/lib/python3.12/site-packages/PyQt5/Qt5/plugins/platforms
# CondaでSpyderをインストール
RUN conda install -y spyder
docker-compose.yml
version: "3.9"
services:
spyder-env:
build:
context: .
image: spyder-env
container_name: spyder-env-container
environment:
- DISPLAY=${DISPLAY}
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
stdin_open: true
tty: true
ビルド実行
$ docker compose build
ライブラリが多いので時間がかかる。
以下、 docker compose
とハイフン -
は無いので注意。
バージョンの問題でハイフン有りの旧式だとコマンドが動作しない。
コンテナ起動
$ docker compose up -d
$ docker compose exec spyder-env bash
動作確認
DISPLAYの値
(base) root@4e2213483ac4:/# echo $DISPLAY
:0.0
WSLgが動くか
(base) root@4e2213483ac4:/# xeyes
Spyder起動
(base) root@4e2213483ac4:/# spyder
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
QGLXContext: Failed to create dummy context
今後
- Anacondaへの移植
- Spyderで動かしたいツールがあるので準備
- 以下を参考にDocker-CE環境にする