ホームページをリニューアルしました。旧HPはこちら
ソフト・ハードウェア Linux Python

2023-06-27 windows11にWSLをインストール

4月にHPの中古PCを購入したので、Widows11とLinux(Ubuntu)が併用できるように、WSL2(Windows Subsystem for Linux バージョン2 )をインストールした。以下、インストールの備忘録。

1、WSLインストール

powershell もしくはコマンドプロンプト画面から、以下のコマンドを実行

 
PS C:\Users\User> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
'wsl --install -d 'を使用してインストールします。

NAME FRIENDLY NAME
* Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4 openSUSE Leap 15.4
openSUSE-Tumbleweed openSUSE Tumbleweed

(注)Ubuntu22.04をインストールしたところ、pythonのversionが3.10となり、またこのバージョンに付随する各種パッケージもバージョンアップされ、Python3.8の開発環境と大きく変わってしまった。そこでubuntu20.04 LTSをインストールしなおした。

PS C:\Users\User> wsl --install -d Ubuntu-20.04 LTS
要求された操作には管理者特権が必要です。
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu 20.04 LTS
Ubuntu 20.04 LTS はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
2、再起動

再起動すると自動でpowershellが立ち上がり、ubuntuのユーザ、パスワードを聞いてくる。
パスワードを入力するとインストール終了。

Ubuntu 20.04 LTS は既にインストールされています。
Ubuntu 20.04 LTS を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: miyasan
New password:
Retype new password:
passwd: password updated successfully
この操作を正しく終了しました。
3、ネットワーク問題の解決

pipをインストールしようとすると、ネットワークが繋がらないようでインストールできない。
これは、/etc/resolv.confのファイル内容が自動で作られていて、nameseverが動作しないため。
nameserver 172.31.80.1は、Windows11とWSLとの間の仮想ネットワークアドレスのようだ。

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.31.80.1

そこで、上記の指示に従って、/etc/wsl.confファイルを以下のように変えて、WSL起動時に、/etc/resolv.confが新規に作成されないようにする。

[boot]
systemd = true
[network]
genereteResolvConf = fales

次にパソコンを再起動し、/etc/resolv.confファイルに有効なDNSアドレスを設定する。

# nameserver 172.31.80.1
nameserver 8.8.8.8
nameserver 8.8.4.4

IPアドレス「8.8.8.8」はGoogleが運営するパブリックDNSサービス(Google Public DNS)。「8.8.4.4」がサブのIPアドレス。

参考URL:
https://blog.cosnomi.com/posts/wsl-resolv-conf/
https://blog.jp.square-enix.com/iteng-blog/posts/00015-wsl-dns-custom/

5、pipのインストール

こうすることで、以下のコマンドを実行すると外部アドレスとつながり、パッケージがupdateされる。
$ sudo apt update

続いてpipをインストール
$ sudo apt install python3-pip

更にipython3をインストール
$ sudo apt install ipython3

6、python3のプログラムで使う必要なライブラリをインストール

Windows10のDELLのパソコンと同じPython環境にするため、以下のライブラリはバージョンを指定してインストール。

・matplotlib 3.2.1
・numpy 1.18.2
・pandas 1.0.3

これで既成のPythonプログラムがipython上で動くと思ったら、「Tkinterがないので、%pasteやplt.show()でグラフ表示できない」とのエラーメッセージ。

ネットで調べると、
Tkinter は Python で GUI (Graphical User Interface) を扱うための標準的なライブラリ。Tcl/Tk の Tk (Tool Kit) の部分を Python から利用できるようにしたもの。Windows の場合、Tkinter は Python に同梱されている。Unix 系 OS の場合、Python はあらかじめインストールされていることが多いが、Tkinter はインストールされていないことがある
とのこと。

python3-tkのパッケージがないようなのでインストール。
$ sudo apt-get install python3-tk

ようやくDELLと同じPython3の環境となり、これまで作成したProgramが動作した。尚、scipyの最新版(1.10.1)をインストールすると、numpyは自動的に1.24.4にバージョンアップされ、その結果、numpyで親しんできた’np’のエイリアスが使えなくなってしまったので、scipyはuninstallした。

Python3.10では3.8と比べて記述形式がかなり変更されているように思う。プログラムミスを防ぐための対応なのだろうが、過去に作成されたプログラムの可搬性が難しくなる。pythonのコミュニティー・フォーラムでは、こうしたクレームや意見が出ていないだろうか?と思った。

参考URL:
https://qiita.com/kaityo256/items/ae63030d7708f587fe89
https://garivinegar.com/python-wsl-matplotlib/
http://www.nct9.ne.jp/m_hiroi/light/py3tk01.html
https://superuser.com/questions/549300/paste-magic-function-on-ipython3

追記:

・scipyについて
Windows10のDELLのパソコンと同じscipy 1.6.2をインストール

・ipython3 エラーメッセージ
%pasteを行うと”WSL python Gdk-Message: 11:26:47.160: Unable to load fleur from・・・”というエラーメッセージがでる。以下のパッケージを入れて解決。
$ sudo apt install adwaita-icon-theme-full
GTKパッケージにかかわる問題のようだが、解決したので深く理解していない。

参考URL:https://honobono-ahiru.hatenablog.com/entry/2022/01/02/184530

コメント

タイトルとURLをコピーしました