前回の 自宅サーバのOSをLTSに で23.04から24.04LTSにアップグレードしたらwebuiが動かなくなっちゃった件をなんとかします。
GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
でpythonは3.11か3.10ねって書いてあるのに24.04LTSは3.12なのでエラーになってる様子。
# Ubuntu 24.04 と丁寧に対応方法書いてくれてるのでそのままやります。
まずはコレ
# Debian-based:
$ sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
注意、'libglib2.0-0' の代わりに 'libglib2.0-0t64' を選択します
wget はすでに最新バージョン (1.21.4-1ubuntu4.1) です。
git はすでに最新バージョン (1:2.43.0-1ubuntu7.1) です。
python3 はすでに最新バージョン (3.12.3-0ubuntu2) です。
python3-venv はすでに最新バージョン (3.12.3-0ubuntu2) です。
libgl1 はすでに最新バージョン (1.7.0-1build1) です。
libgl1 は手動でインストールしたと設定されました。
libglib2.0-0t64 はすでに最新バージョン (2.80.0-6ubuntu3.1) です。
libglib2.0-0t64 は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
avahi-utils cpdb-backend-cups fonts-kacst-one fonts-lao fonts-liberation2 fonts-lklug-sinhala fonts-tlwg-garuda fonts-tlwg-garuda-ttf fonts-tlwg-kinnari
fonts-tlwg-kinnari-ttf fonts-tlwg-mono fonts-tlwg-mono-ttf fonts-tlwg-norasi-ttf fonts-tlwg-sawasdee-ttf fonts-tlwg-typist-ttf fonts-tlwg-typo-ttf fonts-tlwg-umpush-ttf
fonts-tlwg-waree-ttf gir1.2-gck-1 gir1.2-gcr-3 gir1.2-goa-1.0 irqbalance libblockdev-part-err2 libboost-regex1.74.0 libboost-thread1.74.0 libcbor0.8 libclamav9
libcpdb2t64 libdav1d6 libgcab-1.0-0 libicu72 libicu72:i386 libmfx1 libnfs13 libplacebo208 libqt5multimedia5 libsigc++-2.0-0v5 libsoup-2.4-1:i386 libsoup-gnome-2.4-1
libtfm1 libtirpc3t64:i386 libunistring2:i386 libwinpr2-2t64 libwpe-1.0-1 libwpebackend-fdo-1.0-1 openjdk-17-jre-headless perl-modules-5.36 python3-freetype
python3-requests-toolbelt tzdata-icu
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
やる必要ありませんでした。
余計なもの残ってるようなので消します。
$ sudo apt autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
avahi-utils cpdb-backend-cups fonts-kacst-one fonts-lao fonts-liberation2 fonts-lklug-sinhala fonts-tlwg-garuda fonts-tlwg-garuda-ttf fonts-tlwg-kinnari
fonts-tlwg-kinnari-ttf fonts-tlwg-mono fonts-tlwg-mono-ttf fonts-tlwg-norasi-ttf fonts-tlwg-sawasdee-ttf fonts-tlwg-typist-ttf fonts-tlwg-typo-ttf fonts-tlwg-umpush-ttf
fonts-tlwg-waree-ttf gir1.2-gck-1 gir1.2-gcr-3 gir1.2-goa-1.0 irqbalance libblockdev-part-err2 libboost-regex1.74.0 libboost-thread1.74.0 libcbor0.8 libclamav9
libcpdb2t64 libdav1d6 libgcab-1.0-0 libicu72 libicu72:i386 libmfx1 libnfs13 libplacebo208 libqt5multimedia5 libsigc++-2.0-0v5 libsoup-2.4-1:i386 libsoup-gnome-2.4-1
libtfm1 libtirpc3t64:i386 libunistring2:i386 libwinpr2-2t64 libwpe-1.0-1 libwpebackend-fdo-1.0-1 openjdk-17-jre-headless perl-modules-5.36 python3-freetype
python3-requests-toolbelt tzdata-icu
アップグレード: 0 個、新規インストール: 0 個、削除: 50 個、保留: 0 個。
この操作後に 342 MB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 215972 個のファイルとディレクトリがインストールされています。)
(略)
続いてコレ
# Ubuntu 24.04
$ sudo add-apt-repository ppa:deadsnakes/ppa
リポジトリ: 'Types: deb
URIs: https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/
Suites: noble
Components: main
'
概要:
This PPA contains more recent Python versions packaged for Ubuntu.
Disclaimer: there's no guarantee of timely updates in case of security problems or other issues. If you want to use them in a security-or-otherwise-critical environment (say, on a production server), you do so at your own risk.
Update Note
===========
Please use this repository instead of ppa:fkrull/deadsnakes.
Reporting Issues
================
Issues can be reported in the master issue tracker at:
https://github.com/deadsnakes/issues/issues
Supported Ubuntu and Python Versions
====================================
- Ubuntu 20.04 (focal) Python3.5 - Python3.7, Python3.9 - Python3.13
- Ubuntu 22.04 (jammy) Python3.7 - Python3.9, Python3.11 - Python3.13
- Ubuntu 24.04 (noble) Python3.7 - Python3.11, Python3.13
- Note: Python2.7 (focal, jammy), Python 3.8 (focal), Python 3.10 (jammy), Python3.12 (noble) are not provided by deadsnakes as upstream ubuntu provides those packages.
Why some packages aren't built:
- Note: for focal, older python versions require libssl<1.1 so they are not currently built
- Note: for jammy and noble, older python versions requre libssl<3 so they are not currently built
- If you need these, reach out to asottile to set up a private ppa
The packages may also work on other versions of Ubuntu or Debian, but that is not tested or supported.
Packages
========
The packages provided here are loosely based on the debian upstream packages with some modifications to make them more usable as non-default pythons and on ubuntu. As such, the packages follow debian's patterns and often do not include a full python distribution with just `apt install python#.#`. Here is a list of packages that may be useful along with the default install:
- `python#.#-dev`: includes development headers for building C extensions
- `python#.#-venv`: provides the standard library `venv` module
- `python#.#-distutils`: provides the standard library `distutils` module
- `python#.#-lib2to3`: provides the `2to3-#.#` utility as well as the standard library `lib2to3` module
- `python#.#-gdbm`: provides the standard library `dbm.gnu` module
- `python#.#-tk`: provides the standard library `tkinter` module
Third-Party Python Modules
==========================
Python modules in the official Ubuntu repositories are packaged to work with the Python interpreters from the official repositories. Accordingly, they generally won't work with the Python interpreters from this PPA. As an exception, pure-Python modules for Python 3 will work, but any compiled extension modules won't.
To install 3rd-party Python modules, you should use the common Python packaging tools. For an introduction into the Python packaging ecosystem and its tools, refer to the Python Packaging User Guide:
https://packaging.python.org/installing/
Sources
=======
The package sources are available at:
https://github.com/deadsnakes/
Nightly Builds
==============
For nightly builds, see ppa:deadsnakes/nightly https://launchpad.net/~deadsnakes/+archive/ubuntu/nightly
より詳しい情報: https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
リポジトリを追加しています。
続けるには「Enter」キーを、中止するにはCtrl-cを押してください。
ヒット:1 http://security.ubuntu.com/ubuntu noble-security InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu noble InRelease
取得:3 http://jp.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
ヒット:4 http://jp.archive.ubuntu.com/ubuntu noble-backports InRelease
取得:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble InRelease [17.8 kB]
取得:6 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main amd64 Packages [24.5 kB]
取得:7 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main i386 Packages [8,052 B]
取得:8 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main Translation-en [4,952 B]
181 kB を 2秒 で取得しました (81.8 kB/s)
パッケージリストを読み込んでいます... 完了
$ sudo apt updateヒット:1 http://jp.archive.ubuntu.com/ubuntu noble InReleaseヒット:2 http://security.ubuntu.com/ubuntu noble-security InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu noble-updates InRelease ヒット:4 http://jp.archive.ubuntu.com/ubuntu noble-backports InReleaseヒット:5 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble InReleaseパッケージリストを読み込んでいます... 完了依存関係ツリーを作成しています... 完了状態情報を読み取っています... 完了パッケージはすべて最新です。
$ sudo apt install python3.11
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libpython3.11-minimal libpython3.11-stdlib python3.11-minimal
提案パッケージ:
python3.11-venv binfmt-support
以下のパッケージが新たにインストールされます:
libpython3.11-minimal libpython3.11-stdlib python3.11 python3.11-minimal
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
5,478 kB のアーカイブを取得する必要があります。
この操作後に追加で 21.3 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main amd64 libpython3.11-minimal amd64 3.11.10-1+noble1 [834 kB]
取得:2 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main amd64 python3.11-minimal amd64 3.11.10-1+noble1 [2,173 kB]
取得:3 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main amd64 libpython3.11-stdlib amd64 3.11.10-1+noble1 [1,876 kB]
取得:4 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble/main amd64 python3.11 amd64 3.11.10-1+noble1 [596 kB]
5,478 kB を 3秒 で取得しました (1,659 kB/s)
以前に未選択のパッケージ libpython3.11-minimal:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 213807 個のファイルとディレクトリがインストールされています。)
.../libpython3.11-minimal_3.11.10-1+noble1_amd64.deb を展開する準備をしています ...
libpython3.11-minimal:amd64 (3.11.10-1+noble1) を展開しています...
以前に未選択のパッケージ python3.11-minimal を選択しています。
.../python3.11-minimal_3.11.10-1+noble1_amd64.deb を展開する準備をしています ...
python3.11-minimal (3.11.10-1+noble1) を展開しています...
以前に未選択のパッケージ libpython3.11-stdlib:amd64 を選択しています。
.../libpython3.11-stdlib_3.11.10-1+noble1_amd64.deb を展開する準備をしています ...
libpython3.11-stdlib:amd64 (3.11.10-1+noble1) を展開しています...
以前に未選択のパッケージ python3.11 を選択しています。
.../python3.11_3.11.10-1+noble1_amd64.deb を展開する準備をしています ...
python3.11 (3.11.10-1+noble1) を展開しています...
libpython3.11-minimal:amd64 (3.11.10-1+noble1) を設定しています ...
新バージョンの設定ファイル /etc/python3.11/sitecustomize.py をインストールしています ...
python3.11-minimal (3.11.10-1+noble1) を設定しています ...
libpython3.11-stdlib:amd64 (3.11.10-1+noble1) を設定しています ...
python3.11 (3.11.10-1+noble1) を設定しています ...
gnome-menus (3.36.0-1.1ubuntu3) のトリガを処理しています ...
man-db (2.12.0-4build2) のトリガを処理しています ...
mailcap (3.70+nmu1ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.27-2build1) のトリガを処理しています ...
# Only for 3.11
# or in webui-user.sh
# python3 executable
#python_cmd="python3"
python_cmd="python3.11"
が、エラー前回と同じ。
↑のpython_cmd無視されてそう。
$ python3.11
Python 3.11.10 (main, Sep 7 2024, 18:35:41) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
webui.shの中にecho仕込んでみると
# python3 executable
の直後では3.11なのに
"${python_cmd}" -u "${LAUNCH_SCRIPT}" "$@"
の直前では3.12になってしまっていました。
webui.shがバグってるんじゃないかねえこれ。
どこかで変数上書きしてそうな気がするけど他で代入してるところはここしか無さそう。
python_cmd="${venv_dir}"/bin/python
前後にechoで挟んでみたら
echo $python_cmd
python_cmd="${venv_dir}"/bin/python
echo $python_cmd
やはり。
python3.11
venv/bin/python
直前にそれっぽい分岐があるので見てみると
if [[ $use_venv -eq 1 ]] && [[ -z "${VIRTUAL_ENV}" ]];
の中で
if [[ ! -d "${venv_dir}" ]]
then
"${python_cmd}" -m venv "${venv_dir}"
"${venv_dir}"/bin/python -m pip install --upgrade pip
first_launch=1
fi
でvenvがなければvenvつくって
if [[ -f "${venv_dir}"/bin/activate ]]
then
source "${venv_dir}"/bin/activate
# ensure use of python from venv
python_cmd="${venv_dir}"/bin/python
でさっきのログだしたところでvenvを使うようにしてました。
当たり前ですがvenvはコード( GitHub - AUTOMATIC1111/stable-diffusion-webui at v1.10.1 )にあるわけではなくここの処理で作られているので最初の条件の $use_venv がどこかでtrueな感じになってるんでしょう。
で、最初の方を見てみると
# If $venv_dir is "-", then disable venv support
use_venv=1
if [[ $venv_dir == "-" ]]; then
use_venv=0
fi
これより前に venv_dir への代入はないので webui-user.sh では何もしないのではなく明示的に - を入れておかないといけないのかもしれない。
echo "aaa"
echo ${venv_dir}
# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
if [[ -z "${venv_dir}" ]] && [[ $use_venv -eq 1 ]]
then
venv_dir="venv"
fi
echo ${venv_dir}
で出たのが
aaa
venv
つまり一度venvが出来上がったらwebui-user.shでpythonバージョン指定しても無視される。
なのでvenvのディレクトリどかしてからバージョン指定して起動させればそのバージョンでvenvディレクトリが作られるんじゃないか。
webui-user.shに追記
python_cmd="python3.11"
で起動
$ ./webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
################################################################
Running on kmd user
################################################################
################################################################
Repo already cloned, using it as install directory
################################################################
################################################################
Create and activate python venv
################################################################
Error: Command '['/home/kmd/stable-diffusion-webui/venv/bin/python3.11', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
/home/kmd/stable-diffusion-webui/venv/bin/python: No module named pip
################################################################
ERROR: Cannot activate python venv, aborting...
################################################################
入ってるはずなんだけど。
$ sudo apt-get install python3-pip
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.12-dev python3-dev python3-setuptools
python3-wheel python3.12-dev
提案パッケージ:
apache2 | lighttpd | httpd python-setuptools-doc
以下のパッケージが新たにインストールされます:
javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.12-dev python3-dev python3-pip
python3-setuptools python3-wheel python3.12-dev
(略)
そしてさっきできちゃったvenvディレクトリを削除して起動してみるけどエラーかわらず。
python3.11を指定せずにもう一度venv削除して実行してみると一瞬進んだ風に。
$ ./webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
################################################################
Running on kmd user
################################################################
################################################################
Repo already cloned, using it as install directory
################################################################
################################################################
Create and activate python venv
################################################################
Requirement already satisfied: pip in ./venv/lib/python3.12/site-packages (24.0)
Collecting pip
Downloading pip-24.2-py3-none-any.whl.metadata (3.6 kB)
Downloading pip-24.2-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.8/1.8 MB 17.4 MB/s eta 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 24.0
Uninstalling pip-24.0:
Successfully uninstalled pip-24.0
Successfully installed pip-24.2
################################################################
Launching launch.py...
################################################################
glibc version is 2.39
Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)
=============================================================================================
INCOMPATIBLE PYTHON VERSION
This program is tested with 3.10.6 Python, but you have 3.12.3.
If you encounter an error with "RuntimeError: Couldn't install torch." message,
or any other error regarding unsuccessful package (library) installation,
please downgrade (or upgrade) to the latest version of 3.10 Python
and delete current Python and "venv" folder in WebUI's directory.
You can download 3.10 Python from here: https://www.python.org/downloads/release/python-3106/
Use --skip-python-version-check to suppress this warning.
=============================================================================================
Python 3.12.3 (main, Jul 31 2024, 17:43:48) [GCC 13.2.0]
Version: v1.10.1
Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
Installing torch and torchvision
Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu121
ERROR: Could not find a version that satisfies the requirement torch==2.1.2 (from versions: 2.2.0, 2.2.0+cu121, 2.2.1, 2.2.1+cu121, 2.2.2, 2.2.2+cu121, 2.3.0, 2.3.0+cu121, 2.3.1, 2.3.1+cu121, 2.4.0, 2.4.0+cu121, 2.4.1, 2.4.1+cu121)
ERROR: No matching distribution found for torch==2.1.2
Traceback (most recent call last):
File "/home/kmd/stable-diffusion-webui/launch.py", line 48, in <module>
main()
File "/home/kmd/stable-diffusion-webui/launch.py", line 39, in main
prepare_environment()
File "/home/kmd/stable-diffusion-webui/modules/launch_utils.py", line 381, in prepare_environment
run(f'"{python}" -m {torch_command}', "Installing torch and torchvision", "Couldn't install torch", live=True)
File "/home/kmd/stable-diffusion-webui/modules/launch_utils.py", line 116, in run
raise RuntimeError("\n".join(error_bits))
RuntimeError: Couldn't install torch.
Command: "/home/kmd/stable-diffusion-webui/venv/bin/python" -m pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url https://download.pytorch.org/whl/cu121
Error code: 1
- Python 3.12.3 だとダメ
- Python 3.12.3 なら torch 2.1.2 じゃないとだめ
というわけで1つ目がダメなことは変わらなず。
じゃあ3.10ならどうなのかというと指定しない場合と同じエラーになってしまう。
理由は
# python3 executable
if [[ -z "${python_cmd}" ]]
then
python_cmd="python3.10"
fi
if [[ ! -x "$(command -v "${python_cmd}")" ]]
then
python_cmd="python3"
fi
3.10入れてないんだからあたりまえでした。
めんどくさがらずに3.11のエラーをちゃんと読んでエラーでた箇所特定してみます。
Create and activate python venv
のあたりなのでそのへんにecho仕込む。
if [[ ! -d "${venv_dir}" ]]
then
echo "aaa"
"${python_cmd}" -m venv "${venv_dir}"
echo "bbb"
"${venv_dir}"/bin/python -m pip install --upgrade pip
echo "ccc"
first_launch=1
fi
実行すると
aaa
Error: Command '['/home/kmd/stable-diffusion-webui/venv/bin/python3.11', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
bbb
/home/kmd/stable-diffusion-webui/venv/bin/python: No module named pip
ccc
直にvenvしてみても同じエラー
$ python3.11 -m venv venv
Error: Command '['/home/kmd/stable-diffusion-webui/venv/bin/python3.11', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
同じエラーの人がいたので参考にさせてもらい、
cimg/pythonでvenvによる仮想環境の作成がエラーになる #Python - Qiita
まずいちばん簡単そうな
案2: pip付属のvenvをインストールする
です。
しかしさっき直にやってみてエラーになってるということは3.11用のvenvが入ってないということなのでいれます。
$ sudo apt install python3.11-venv
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
python3.11-distutils python3.11-lib2to3
以下のパッケージが新たにインストールされます:
python3.11-distutils python3.11-lib2to3 python3.11-venv
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
(略)
試しにやってみます。
################################################################
Create and activate python venv
################################################################
################################################################
ERROR: Cannot activate python venv, aborting...
################################################################
venvディレクトリの中みると下層のディレクトリ内がスッカスカ。
binの中にactivateファイルもありません。
じゃあまた直にやってみたらどうなのかということでvenvつくってみたらちゃんとactivateファイルできてました。
この状態からstable diffusionを起動するといけるのかもしれない・・・と期待を込めて起動してみたら・・・
$ ./webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
################################################################
Running on kmd user
################################################################
################################################################
Repo already cloned, using it as install directory
################################################################
################################################################
Create and activate python venv
################################################################
################################################################
Launching launch.py...
################################################################
glibc version is 2.39
Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)
Python 3.11.10 (main, Sep 7 2024, 18:35:41) [GCC 13.2.0]
Version: v1.10.1
Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
Installing torch and torchvision
Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu121
Collecting torch==2.1.2
(略)
そしてそのままいつもの起動成功してそうなメッセージまで!
ブラウザからも動きました。解決。
ただ、前からほったらかしにしてた起動時のエラーメッセージはそのままのこってます。
To create a public link, set `share=True` in `launch()`.
*** Error executing callback app_started_callback for /home/kmd/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/api.py
Traceback (most recent call last):
File "/home/kmd/stable-diffusion-webui/modules/script_callbacks.py", line 256, in app_started_callback
c.callback(demo, app)
File "/home/kmd/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/api.py", line 83, in controlnet_api
controlnet_input_images: List[str] = Body([], title='Controlnet Input Images'),
^^^^
NameError: name 'List' is not defined
---
今日は疲れたのでおわり。
コメント
コメントを投稿