質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3200閲覧

No module named PIL エラーを解消したい

ken10

総合スコア5

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/25 04:13

前提・実現したいこと

Python初心者です。
制作したゲームをブログに載せる為、VSCodeでアップロードしたいです。
VSCode内での動作確認中に、以下のエラーメッセージが発生しました。

ご教示のほど、よろしくお願い致します。

発生している問題・エラーメッセージ

ImportError: No module named PIL

該当のソースコード

python

1# -*- coding: utf-8 -*- 2import tkinter 3import random 4from PIL import Image, ImageTk 5 6r_ans=["巨人", "阪神", "中日", "横浜", "広島","ヤクルト"] 7rank = ["1位", "2位", "3位", "4位", "5位", "6位"] 8 9Q = 0 10 11# 問題をランダムに選ぶ 12def click_btn(): 13 global Q 14 Q = random.randint(0, 5) 15 label["text"] = rank[Q] 16 17def init(): # 初期化 18 click_btn() 19 entry.delete(0, tkinter.END) # entryの中身を全て削除 20 21def ans(event): 22 answer = entry.get() 23 if answer == r_ans[Q]: # 条件式が正しいか確認する 24 judge["text"] = "正解です‼︎" 25 else: 26 judge["text"] = "不正解です‼︎" 27 28root = tkinter.Tk() 29root.title("昨年のセ・リーグ順位は?") 30root.resizable(False, False) 31canvas = tkinter.Canvas(root, width=800, height=492) 32canvas.pack() 33gazou = tkinter.PhotoImage(file="game-main.png") 34canvas.create_image(400, 246, image=gazou) 35 36 37# ラベルを使って文字を画面に出す 38label = tkinter.Label(root, text="??", font=("Times New Roman", 40), bg="white") 39label.place(x=300, y=60) 40 41# Entryを出現させる 42entry = tkinter.Entry(width=10, font=("Times New Roman", 30), bg="white") 43entry.insert(tkinter.END, "球団名") 44entry.place(x=300, y=120, width=200, height=40) 45 46# 決定ボタン 47decide = tkinter.Button(text="決定", width=20, font=("Times New Roman", 24)) 48decide.bind("<Button-1>", ans) 49decide.place(x=500, y=120, width=100, height=40) 50 51# 問題を変えるボタン 52button = tkinter.Button(text=u"次の問題へ", font=("Times New Roman", 36), command=init, fg="skyblue") 53button.place(x=300, y=300) 54 55# 成否の出力に利用するラベル 56judge = tkinter.Label(text=u"", font=("", 12)) 57judge.place(x=300, y=160) 58 59root.mainloop()

試したこと

pyenvのインストール
Pillowのインストール

pyhon -Vと入力すると、Pytho 2.7.16と表示されました。
python3 -Vと入力すると、Python 3.9.1と表示されました。
VSCode内、左下にはPyhon 3.9.1と表示されています。

pip3 listと入力すると、Pillow 8.2.0と表示されました。
pyenv install 3.9.1と入力すると、
BUILD FAILED (OS X 11.2.3 using python-build 20180424)
と表示されることも確認済みです。

補足情報(FW/ツールのバージョンなど)

macOS Big Sur 11.2.3
Visual Studio Code

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/25 04:39

> VSCode内での動作確認中に VSCodeでどのように実行していますか。
ken10

2021/04/25 05:01

▷印からRun Codeを押しています。
退会済みユーザー

退会済みユーザー

2021/04/25 05:09

which pip3 which python3 とターミナルに入力した時の結果はどうなるでしょうか
ken10

2021/04/25 05:12

以下の結果となりました。 /Library/Frameworks/Python.framework/Versions/3.9/bin/pip3 /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
退会済みユーザー

退会済みユーザー

2021/04/25 05:22

画面右下の3.9.1という表示を選択すると、「/Library/Frameworks/Python.framework/Versions/3.9」と似たパスが表示されると思うのでそれ選択してみてください。 おそらくpillowをインストールした環境と違う環境をvscodeで見てる気がします。
ken10

2021/04/25 06:00

インタープリターを選択と表示され、以下のような結果となりました。 Python 2.7.16 64-bit /usr/bin/python Python 3.7.3 64-bit /usr/bin/python3 Python 3.9.1 64-bit /usr/local/bin/python3 Python 3.9.1を選択したのですが、変化が起きませんでした。 Run Codeを実行しても同じエラーのままです。 Python 3.9.1を選択した後でも、Python 2.7.16の周囲が濃く囲われています。
jbpb0

2021/04/25 06:03 編集

> pip3 listと入力すると、Pillow 8.2.0と表示されました。 の状態で pip3 show Pillow を実行してください いろいろ表示される中に「Location:」で始まる行がありますので、そこに書かれてるパスを記録してください 次に、 > ImportError: No module named PIL が発生する状態で、 下記のpythonコードを実行してください import sys import pprint pprint.pprint(sys.path) たくさんパスが表示されますが、その中にpip3 show...で記録したパスが入ってますでしょうか? 入ってないとimportできません
ken10

2021/04/25 06:28

pip show Pillowを実行した結果、以下のように表示されました。 Location: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages > ImportError: No module named PILが発生している状態で実行しましたが、入っていませんでした。 zsh: command not found: import zsh: command not found: import zsh: unknown file attribute: y 知識不足で申し訳ないのですが、パスを記録する場所はどこになるのでしょうか?
jbpb0

2021/04/25 06:39

import sys import pprint pprint.pprint(sys.path) はpythonのコードです from PIL import... の代わりに、それを実行してください
退会済みユーザー

退会済みユーザー

2021/04/25 06:42

設定を開いてpython.pythonpathと検索して /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 をpythonpathに設定してみてください。 ワークスペースを開いている場合はワークスペースで設定する必要があります。
ken10

2021/04/25 06:58

ありがとうございます。実行したところ、以下のようになりました。 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', ↑ このような形式のメッセージがたくさん表示されました。 最後の一文がこちらです。 _tkinter.TclError: couldn't open "game-main.png": no such file or directory python.pythonpathはご指摘の通りに設定できました。
jbpb0

2021/04/25 07:55

> Location: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages pip3で入れたPillowが入ってるのはPython 3.9です > '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', このような形式のメッセージがたくさん表示されました。 VSCodeで実行してるのはPython 2.7で、そちらにはPillowが入ってないので、importできません yakitoriiさんの下記の指摘の通りです > pillowをインストールした環境と違う環境をvscodeで見てる気がします。
ken10

2021/04/25 08:37

画面左下にはpython 3.9.1と表示されていても、実行しているのはpython 2.7.16のなので、importできていないということですね。 インタープリターでpython 3.9.1を選択しても、切り替えができないのはどうしてなのでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/25 09:10

左下の表示が3.9.1になっていれば3系のpythonが使われるはずです。 再生ボタンを押した際にターミナルに自動生成されるコマンドを教えて頂けますか?
退会済みユーザー

退会済みユーザー

2021/04/25 09:12

もしかしてcode runnerという拡張機能使っていませんか?
ken10

2021/04/25 09:20

現在は以下のように表示されるようになりました‼︎ ['/Users/〇〇/Desktop/ken10-〇〇', '/Users/〇〇/.pyenv/versions/3.9.1/lib/python39.zip', '/Users/〇〇/.pyenv/versions/3.9.1/lib/python3.9', '/Users/〇〇/.pyenv/versions/3.9.1/lib/python3.9/lib-dynload', '/Users/〇〇/.pyenv/versions/3.9.1/lib/python3.9/site-packages'] pyenv glabal 3.9.1 zsh -1 python --version と入力して以降、Python 3.9.1の状態で実行できているようです。 code runnerは使用しています。
jbpb0

2021/04/25 10:24

> ImportError: No module named PIL は出なくなりました?
ken10

2021/04/25 10:28

> ImportError: No module named PIL それは出なくなりました。 代わりに、 TclError: couldn't open "images/〇〇.png": no such file or directory というエラーが発生するようになりました。
guest

回答1

0

ベストアンサー

公式の拡張機能ではなくCode Runnerというサードパーティー製の拡張機能を使ってpythonを実行していたのが原因です。
Run CodeはCode Runnerのコマンドで、Code Runnerはあまり使ったことがないので詳しくは知りませんが、python ファイル名でpythonのプログラムを実行するみたいです。
このコマンドはmacのパスの設定に依存するためVSCodeのpythonの設定をいくら変えてもmacのパスに登録しているpython(2系のpython)が使われます。
そのため質問の追記・修正依頼で書かれてますが、pyenv glabal 3.9.1でmacのパスを変更したため3系のpythonが使われるようになっています。

パスについてあまり詳しくないのであればCode Runnerではなく公式のpythonの拡張機能を使って実行した方がいいですよ。
(右上の▷ボタンRun Python in terminalかF5キーを押して実行)
https://marketplace.visualstudio.com/items?itemName=ms-python.python
https://code.visualstudio.com/docs/python/python-tutorial

投稿2021/04/25 09:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ken10

2021/04/25 10:22 編集

ご説明、ありがとうございます‼︎ そうですね、そうしてみます。 VSCodeの起動時に、python -Vと入力すると、Python3.9.1になることを確認できたので良かったです。 緑色の三角印を押すとターミナルで処理が始まるようになりました。 まだまだ分からないことだらけなんですが、聞きたいことがあるのですが、この質問に関してはここで完了とさせていただきますね。 丁寧な説明で助かりました、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問