2
0

More than 1 year has passed since last update.

VisualStudio CodeでPython開発コンテナーを使おうとしてハマった備忘録

Posted at

ローカルに開発環境を作るためにひさしぶりに開発コンテナーを使おうとしたらちょっとハマりました。

やりたいこと

  • Pythonの開発環境を作りたい
  • Pythonのデータ解析ライブラリを使えるようにしたい:Pandas、Poloars、NumPy、PyArrow

実行環境

  • Windows 11 Pro 22H2 22621.1702
  • Rancher Desktop 1.8.1
  • WSL2 (Ubuntu)
  • VisualStudio Code 1.78.2
    • Dev Containers v0.292.0
  • Dockerベースイメージ:python:3.11.3-bullseye (後述)

遭遇したトラブルと解決方法

NumPyとPyArrowのインストールに失敗する

最新のPython(2023/5/14時点では3.12.0a7)を選ぶと失敗、Alpine Linuxを選ぶと失敗。

最新のPythonを選んだとき:

#0 1524.0       CMake Error at CMakeLists.txt:261 (find_package):
#0 1524.0         By not providing "FindArrow.cmake" in CMAKE_MODULE_PATH this project has
#0 1524.0         asked CMake to find a package configuration file provided by "Arrow", but
#0 1524.0         CMake did not find one.

Alpine Linuxを選んだとき:

#0 26.92             [Errno 2] No such file or directory: 'gcc'
#0 26.92
#0 26.92             RuntimeError: Broken toolchain: cannot link a simple C program.
#0 26.92             [end of output]
#0 26.92
#0 26.92         note: This error originates from a subprocess, and is likely not a problem with pip.
#0 26.92         ERROR: Failed building wheel for numpy
#0 26.92       Failed to build numpy
#0 26.92       ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projects
#0 26.92       [end of output]

解決方法は色々ありそうな気がしますが、今回はDockerベースイメージにpython:3.11.3-bullseyeを選ぶことで回避しました。

apt-get updateに失敗する

cmakeが必要なのかも?と試行錯誤する過程でapt-get updateしようとしたときに、以下のようなエラーが発生しました。

E: Release file for http://deb.debian.org/debian-security/dists/bullseye-security/InRelease is not valid yet

apt-getのオプションに-o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=falseを加えて解決。

RUN apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update \
  && apt-get install -y cmake \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

そもそもの原因はWSLの時刻がズレているせいだったみたい。
確認してみたらめちゃめちゃズレてる!

user@mypc:~$ date
Sun May 14 07:23:46 JST 2023
user@mypc:~$ sudo hwclock -s
[sudo] password for user:
user@mypc:~$ date
Sun May 14 12:09:05 JST 2023

開発コンテナーに接続しようとすると失敗する

開発コンテナーのイメージがビルドできたところで、以下のようなエラーが発生しました。

docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: \\wsl.localhost\Ubuntu\mnt\wslg\runtime-dir\wayland-0.

以下のページのトラブルシューティングを参考にVisualStudio Codeの設定を変更することで解決。
VSCode Dev ContainerとRancher Desktopで作るコンテナ環境【WSL】

なるほど、WSLにWAYLAND_DISPLAYが設定されてますね…

user@mypc:~$ echo $WAYLAND_DISPLAY
wayland-0

なので、dev.containers.mountWaylandSocketをfalseにします。
image.png

導入したライブラリ

無事に以下のライブラリを導入できました。

ライブラリ バージョン
numpy 1.24.3
pandas 2.0.1
pyarrow 12.0.0
polars 0.17.13

感想

ふりかえってみると簡単な話だった…精進が足りない。

2
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
2
0