1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

環境

  • 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

image.png

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

image 1.png

今後

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?