🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

MacOS(OSX)

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

Python

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

Q&A

解決済

2回答

1127閲覧

python1年生のpillowを使って画像を扱う課題でエラーがでています

blackw

総合スコア0

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

MacOS(OSX)

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

Python

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

0グッド

0クリップ

投稿2021/01/31 19:30

前提・実現したいこと

python1年生のpillowを使って画像を扱う課題でエラーがでています

環境
macOs Big sur
python 3.8.7
python IDEL

ここに質問の内容を詳しく書いてください。
コードのなかでモジュールをimportするとエラーになります

python

1 2import tkinter as tk 3import tkinter.filedialog as fd 4import PIL.Image 5import PIL.ImageTk 6 7def dispPhoto(path): 8 #画像を読み込む 9 newImage = PIL.Image.open(path).resize((300,300)) 10 #そのイメージをラベルに表示する 11 imageDate = PIL.ImageTk.PhotoImage(newImage) 12 imageLabel.configure(image = imageDate) 13 imageLabel.image = imageDate 14 15 16def openFile(): 17 fpath = fd.askopenfilename() 18 19 if fpath: 20 dispPhoto(fpath) 21 22 23 24 25root = tk.Tk() 26root.geometry("400x350") 27 28btn = tk.button(text="ファイルを開く",command = openFile) 29imageLabel = tk.Label() 30btn.pack() 31imageLabel.pack() 32tk.mainloop()

この頭のimport PIL.Imageでエラーがでているようでした

■■な機能を実装中に以下のエラーメッセージが発生しました。

以下が実行する表示されるエラーメッセージです

Traceback (most recent call last): File "/Users/###/Desktop/python1nenn/displayimage.py", line 3, in <module> import PIL.Image ModuleNotFoundError: No module named 'PIL'

試したこと

pipのバージョンの更新などを行ってみました

pipやpip3などの入力でも試してみました

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

Package Version


Pillow 8.1.0
pip 21.0
setuptools 52.0.0

各バージョンです

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

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

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

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

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

jbpb0

2021/01/31 23:54

idleを使わず、ターミナルで python /Users/###/Desktop/python1nenn/displayimage.py を実行したら、どうなりますか? (python は python3 かも)
blackw

2021/02/01 12:45

ご返答ありがとうございます ターミナルで上記のコードを実行してみた場合は zsh: no such file or directory: このような返答がきました
jbpb0

2021/02/01 12:49

> zsh: no such file or directory: その後には何て書いてあります? 省略されると、何が起きてるか他人が理解しにくくなります
blackw

2021/02/01 12:54

申し訳ありません zsh: no such file or directory: python3/User/###/Desktop/python1nenn/displayimage.py この様な返答がありました ###のところ私の名前でした
jbpb0

2021/02/01 13:10

python3 と /User の間にスペースを入れてください
jbpb0

2021/02/01 13:13

あと、/User/ は /Users/ です タイプミスだと思いますが、念のため
blackw

2021/02/01 13:55

訂正ありがとうございます 修正し実施してみましたらエラーが変わりました Traceback (most recent call last): File "/Users/###/Desktop/python1nenn/displayimage.py", line 1, in <module> import tkinter as tk File "/Users/###/.pyenv/versions/3.8.7/lib/python3.8/tkinter/__init__.py", line 36, in <module> import _tkinter # If this fails your Python may not be configured for Tk ModuleNotFoundError: No module named '_tkinter'
jbpb0

2021/02/01 14:13

やっぱり、idleで動かしてるpythonと、pipでPillowを入れたpythonが異なっているような 下記をファイルに保存して、ファイル名の末尾を.pyにして、idleとターミナルでそれぞれ実行した結果を教えてください import sys import pprint pprint.pprint(sys.path) 名前等はもちろん伏せ字でいいですが、できるだけ省略せずに教えてください
jbpb0

2021/02/01 14:26

あと、 pip show Pillow の結果の中の Location: の行に何て書かれてるかを教えてください (pipはpip3かも)
blackw

2021/02/01 14:52

確認をお願いします こちらがIDLEで実行した結果です =========== RESTART: /Users/###/Desktop/python1nenn/hello.py ========== ['/Users/###/Desktop/python1nenn', '/Users/###/Documents', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages'] >>>
jbpb0

2021/02/01 23:30 編集

ターミナルでの結果もお願いします idleと比較するので あと、pip show... (またはpip3 show...) の結果もお願いします ターミナルで実行しているのがpython3なら、おそらくpip3でしょう
blackw

2021/02/01 23:48

ターミナルで実行する方法に時間がかかってしいました。 ターミナルでの実行結果はこちらです (base) ###@###noMacBook-Pro Desktop % python hello.py ['/Users/###/Desktop', '/Users/###/.pyenv/versions/3.8.7/lib/python38.zip', '/Users/###/.pyenv/versions/3.8.7/lib/python3.8', '/Users/###/.pyenv/versions/3.8.7/lib/python3.8/lib-dynload', '/Users/###/.pyenv/versions/3.8.7/lib/python3.8/site-packages'] (base) ###@###noMacBook-Pro Desktop % 実はターミナルからファイルを実行したことがなく戸惑っていました、補足としてターミナルでこの様に実行してファイルの実行を行いました cd Desktop pwd python 保存したファイル名.py 参考にしたサイトはこちらです https://aiacademy.jp/media/?p=117
blackw

2021/02/01 23:59

pip show Pilloの実行結果です ターミナル (base) ###@###noMacBook-Pro Desktop % pip show Pillow Name: Pillow Version: 8.1.0 Summary: Python Imaging Library (Fork) Home-page: https://python-pillow.org Author: Alex Clark (PIL Fork Author) Author-email: aclark@python-pillow.org License: HPND Location: /Users/###/.pyenv/versions/3.8.7/lib/python3.8/site-packages Requires: Required-by: matplotlib ターミナルではpip show ...も pip3 show...の実行結果も一緒でした IDLEではエラーで実行できませんでした >>> pip3 show pillow SyntaxError: invalid syntax >>> pip show Pillow SyntaxError: invalid syntax >>>
jbpb0

2021/02/02 00:04 編集

やはり、idleのpythonとターミナルのpythonは別物ですね おそらく、 idleのpythonは公式版を入れたそのまま ターミナルのpythonはpyenvの仮想環境のもの でしょう (どちらも、質問者さんが入れたのですよね?) それぞれ、pipで入れたモジュールが下記にあればimportできます idle:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages ターミナル:/Users/###/.pyenv/versions/3.8.7/lib/python3.8/site-packages idleの方ではimportできないので、おそらく、pip(またはpip3)で入れたPillowは、 /Users/###/.pyenv/versions/3.8.7/lib/python3.8/site-packages に入っているのでしょう pip show Pillow (またはpip3 show Pillow) の結果を教えてもらえば、はっきりしますけど どこに入ってるかは、それの「Location:」の行に表示されます 【追記】一つ前のコメントを読む前に投稿してしまいました > Location: /Users/###/.pyenv/versions/3.8.7/lib/python3.8/site-packages やはり、ターミナルのpythonからimportできるところに入ってますね そこだと、現在idleで使ってるpythonからは見えません
jbpb0

2021/02/02 00:13

idleで使ってるpython側にPillowを入れるか、ターミナルと同じpythonをidleから使うか、どちらかをする必要があります idleをどうやって起動しているか、教えてください ターミナルで idle を入力してますか? 他の方法ですか?
blackw

2021/02/02 01:48

############# 「idleをどうやって起動しているか、教えてください」 ############# Idleはpythonをインストールした際に一緒についてきた「IDLE.app」からいつも立ち上げています jbpb0さんがおしゃっているターミナルから起動するやり方は行った事がないです 先のご返答の中に ############# やはり、idleのpythonとターミナルのpythonは別物ですね おそらく、 「idleのpythonは公式版を入れたそのまま ターミナルのpythonはpyenvの仮想環境のもの でしょう (どちらも、質問者さんが入れたのですよね?)」 ############# これに関してはその通りです その時の作業が影響している様に思われるので補足させてください pythonを公式からインストールを行った後にvscodeで作業をするようまた別の書籍にあったのでそうしました この時macのターミナルでは確かpython 3.8.7 ? (だっと思います、とにかく3系と言われるpythonが反映されていました 確認方法はmacのターミナルで python -V と入力してバージョンを確認しました) しかし、vscodeでpythonのファイルを作成して vscodeのターミナルに 「python -作成したファイル名.py」これで実行すると日本語などの処理ができないエラーがでました (print('こんにちは')⇦出力不可 print('hello') ⇦出力される など) この時、vscodeのターミナルにてpythonのバージョンを確認(python -V)したら、python 2.7.? あたりで2系と言われるpythonで処理が行われていました。 調べると、macに標準インストールされているpythonのバージョンだったと思います これを改善するため色々調べていて参考にしたサイトがこちらです https://prog-8.com/docs/python-env この作業の流れでhomebrewとpyenvをインストールしました 作業はmacのターミナルで実行したと思います この作業のあとはvscodeでも3系のpythonでvscodeのターミナルでも反映されるようになりました ご返答の中にあった「仮想環境」に関しては私はどこからその作業を行っているのか自分では分かっていないです
jbpb0

2021/02/02 03:17

> Idleはpythonをインストールした際に一緒についてきた「IDLE.app」からいつも立ち上げています の「python」は、最初に入れた公式版ですか? そうならば、そのidleは最初に入れた公式版pythonとつながっているので、後で入れたpyenv版pythonとは関係なく、今でもそのidleでは公式版pythonが使われてしまいますね > この作業の流れでhomebrewとpyenvをインストールしました の時点で、ターミナルから使うコマンドがpyenvで入れたのが最優先になったため、pip3で入れるとpyenv版python用のところに入ってしまい、公式版pythonからはimportできないのでしょう > この作業のあとはvscodeでも3系のpythonでvscodeのターミナルでも反映されるようになりました ということなら、VS Codeで動いてるpythonは、たぶんpyenv版だと思います となると、おそらくidleだけ違うpython(公式版)を使ってるような
blackw

2021/02/02 04:51

>最初に入れた公式版ですか? その通りです、公式版のインストールに付属していたものです jbpb0さんの推測から公式版に付随したIDLE.appのIDLE Shellにて pip list pip3 list のどちらも実行してみましがどちらも SyntaxError: invalid syntax との実行結果になりました 私は公式版pythonではpipのインストールができていないとい言うことで間違いないでしょうか?
jbpb0

2021/02/02 06:19 編集

idleはpythonのプログラムしか実行できませんので、pipのようなターミナルで実行するコマンドは実行できません 公式版のコマンドは、たぶん /Library/Frameworks/Python.framework/Versions/3.8/bin にあると思います それを確認するために、ターミナルで ls /Library/Frameworks/Python.framework/Versions/3.8/bin を実行してみてください (「ls」の次にはスペースがあります) そうすると、そこにあるファイルの一覧が表示されます たぶん、pipとかpythonとか、他いろいろあると思います そこの優先順位をpyenvよりも上げるように設定すれば、公式版pythonにPillowを入れることができるはずですけど、そうしますか? ただし、その設定をしたら、逆にpyenv版pythonを使うのが、今よりも不便になります(優先度が下がるため)
blackw

2021/02/02 08:24

実行の結果はこちらでした base) ###@###noMacBook-Pro ~ % ls /Library/Frameworks/Python.framework/Versions/3.8/bin 2to3 pip3 python3-config 2to3-3.8 pip3.8 python3.8 easy_install-3.8 pydoc3 python3.8-config idle3 pydoc3.8 idle3.8 python3 私も解決としては公式版pythonにpillowをと思います お話を聞くかぎり私のpyenv版pythonは、私自身が理解していないのもあり 作業の影響などで今後も問題を生む可能性が感じられます しかし、問題があるとすればターミナルやvscodeでの利用する場合のpythonへの影響です お話だとこれらはpyenv版pythonで実行されている様なので、その問題の解決があればいいのですが
jbpb0

2021/02/02 10:07 編集

もし問題が生じたら、設定を戻せば大丈夫です pyenv版は使わなくても、当面は削除せずに放置しておけば、設定を戻せばまた使えるようになります また、設定を変えたら、おそらくVS Codeからも公式版が使えるようになるんじゃないか、と思います (が、私はVS Codeを使ってなくてよく知らないので、思うだけです) 設定の変え方ですが、 https://oku.edu.mie-u.ac.jp/~okumura/python/install.html の「公式サイト Python.org からのインストール(Mac)」の、「さきほど追加されたものを」の次の PATH=... からの3行を、 ~/.zprofile の末尾に追加します ただし、この時に「3.9」のところ(2箇所)は「3.8」に変えます ~/.zprofile の編集は、テキストファイルを編集できるエディタならば何を使っても大丈夫です VS Codeでもできると思いますし、MacOSに付いてるテキストエディットでもできます ただし、万が一必要なところを間違えて削除したりしてもいいように、編集の前にコピーを作っておいてください ~/.zprofile を編集して保存したら、それ以降にターミナルを起動したら、公式版の優先順位が上がっているので、公式版を使えます ただし、python3, pip3のように、コマンドに必ず「3」を付けてください 付けないと、たぶんpyenv版のコマンドが実行されてしまいます 次にやることは、上記Webページにも書かれてますが、公式版のpipをアップデートすることです ターミナルで pip3 install --user --upgrade pip を実行してください (一番左はpip3ですが、一番右はpipです) それが済んだら、Pillow等の必要なものをpip3で入れてください pip3 install --user Pillow 設定を戻すのは、 ~/.zprofile に追加した3行を削除するだけです そこを削除して保存したら、それ以降にターミナルを起動したら、pyenv版の優先順位が高い現在の状態に戻ってます 【追記】編集前の ~/.zprofile のコピーさえ残ってれば設定を戻せるので、必ずコピーを保存しておいてください
jbpb0

2021/02/02 11:02

~/.zprofile を修正・保存した後に、ターミナルで which python3 を実行してみてください その結果が、 /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 となれば、正しく変更できてます もし /Users/###/.pyenv/... みたいに表示されたら、設定が変わってません 修正内容が間違ってないか、保存した時にファイル名が変わってしまってないか、等どこかに間違いがあるので、手順を再確認して、再度実施してください
blackw

2021/02/02 13:25

すいません、私の足らないところですが > PATH=... からの3行を、 ~/.zprofile の末尾に追加します この「末尾」とのことなんですが ~/.zprofile PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}" PATH="${HOME}/Library/Python/3.8/bin:${PATH}" export PATH この形ではなく ~/.zprofile PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}" PATH="${HOME}/Library/Python/3.8/bin:${PATH}" export PATH こちらの方が適当なのでしょうか? また、初歩的な質問なのかもしれないですが 上記のコードはターミナルなどで実行するものなのでしょうか? それともファイルを作成してそれを保存するだけで完了しているのでしょうか? ちなみに、macのテキストエディットで貼り付けし編集し保存したときは拡張子が .rtfとなるのですが こちらは特に気にする必要はないのでしょうか? 一度、テキストエディットで作成し(.rtf)で保存を行ったのですが ターミナルにて which python3 を実行したのですが設定が変わっていない方で反応がありましたので確認をお願いいたします
jbpb0

2021/02/02 13:58 編集

~/.zprofile とは、「~」というフォルダにある「.zprofile」という名前のファイル、という意味です 「~」とは、ユーザーのホームディレクトリ、すなわち「/Users/###/」のことです つまり「/Users/###/」にある「.zprofile」という名前のファイルのことです ただし、訂正があります ~/.zprofile ではなく、 ~/.zshrc を修正してください (新規作成ではなく、既存のファイルの修正) https://prog-8.com/docs/python-env を確認したら、「3. pyenvのインストール」の「実行結果が /bin/zsh の場合、以下4つのコマンドを実行してください。」のところで、 ~/.zshrc の末尾に追加してるので、今回もそのファイルの末尾に追加する方がいいと思います 【追記】.zshrcは隠しファイルなので、設定を変えないとファインダーに出てきません 下記を見て、ファインダーの設定を変えてください https://support.borndigital.co.jp/hc/ja/articles/360005975154
blackw

2021/02/02 14:27

まだ設定の変更ができていないため 私の作業の手順の確認をお願いいたします 先ほど案内いただいたWEBページの PATH=  からの3行をコピーしvscodeにてファイルを作成したのちテキスト文の最初に~/.zshrcをつけました 現在そのファイルのなかは ~/.zshrcPATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"PATH="${HOME}/LibraryPython/3.8/bin:${PATH}"export PATH このように記載されており、ファイルはデスクトップに保存しています ファイル名はpyupと勝手につけています その後ターミナルで which python3 を実行すると /Users/###/.pyenv/shims/python3 この様に応対があり、まだ設定の変更が済んでいないと判断しています
blackw

2021/02/02 14:55

申し訳ないです、私のmac自体の知識不足により大変な勘違いを行っていたようです ~/.zshrcとうファイルがすでにこのmac内にあり そのファイルの内容の変更が先ほどのPATH= から始まるコードの入力と言うことで間違えないでしょうか? やはり、~/.zshrcは隠しコマンドだったようで 表示化すると確認できました finderの私のユーザーアカウントにファイルは入っており ~/.zshrc のファイル内の末尾(下に)先ほどの修正を加えました 現在ターミナルにて  which python3 を実行すると /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 このように応答の変更が確認できました
blackw

2021/02/02 20:29

現在、ターミナルにて上記のpip3のアップグレードとPillowのインストールを実施しました pip3 list を実行すると (base) ###@###noMacBook-Pro ~ % pip3 list Package Version ---------- ------- Pillow 8.1.0 pip 21.0.1 setuptools 49.2.1 このように出力され、無事pillowのインストールが確認できました 次いで本来の目的であるモジュールの実行も可能となりました やはり私の場合はvscodeにて現行のバージョンに近いpython3系を使うのが目的であり、pyenvの利用は本来の目的とは異なる理由のため削除する方が良い判断でしょうか?
jbpb0

2021/02/02 23:33

> ~/.zshrcとうファイルがすでにこのmac内にあり そのファイルの内容の変更が先ほどのPATH= から始まるコードの入力と言うことで間違えないでしょうか? 合ってます 気になるのが、 > ~/.zshrcPATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"PATH="${HOME}/LibraryPython/3.8/bin:${PATH}"export PATH と、一つの行につながって書かれていることです 実際の「.zshrc」に追記されたところは、ちゃんと三つの行に分かれてますか? (「~/.zshrc」の部分は書いてないとして、それ以降の部分)
jbpb0

2021/02/03 09:07 編集

VS Codeで which python3 を実行したり、下記のpythonコードを実行したりした結果は、idleと同じでしょうか? import sys import pprint pprint.pprint(sys.path) 結果がidleと同じなら、公式版pythonを使えてるので、idle, VS Code, ターミナルの全てで公式版を使える状態になってます そうであれば、pyenv版は混乱の元なので、削除した方がいいかもしれませんね もし将来必要になったら、また入れたらいいだけなので
blackw

2021/02/03 12:09

>>実際の「.zshrc」に追記されたところは、ちゃんと三つの行に分かれてますか? ご心配をおかけしました、PATH= からの3行のコードは 紹介されたサイトからコピーし修正し、そのままの形で貼り付けています(ファイル ~/.zshrcのなかです) >>> VS Codeで which python3 を実行したり、下記のpythonコードを実行したりした結果は、idleと同じでしょうか? >>> vscodeのターミナルとmacのターミナルの which pytho3の実行結果は同じでした また記載いただいているコード(import sysなど)の実行結果もvscodeとIDLEで同じ結果を得ることができました
blackw

2021/02/03 12:23

すいません次いで質問があるのですが 私はpyenvをインストールする際に、homebrewをインストールした後にpyenvをインストールしました この場合は、pyenvだけのアンインストールで充分でしょうか? 特にpyenv以外でhomebrewを使っている覚えはありません pyenvのアンインストールに関してはこちらのサイトを参考に実施しようと思います https://qiita.com/Dyslexi4/items/6f659b51c96a71e2a978
jbpb0

2021/02/04 00:57

homebrewは、残していてもいいのではないですかね python以外にも何か入れることになるかもしれないし
blackw

2021/02/04 21:43

わかりました、では後の処理はまた自分で解決していけるよう努力します ここ数日間は貴重なお時間をお借りして大変お世話になりました とても言葉だけでは感謝が伝えられませんが、私の不足する色々な課題も見つかりとても勉強になるものでした 私も他者の助けになるプログラマーになれるよう努めます。
guest

回答2

0

"/Users/###/.pyenv/versions/3.8.7/lib/python3.8/tkinter/init.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'

PyenvでインストールしたPythonはTcl/Tkが有効になっていないので
Tkinterは使えません。
注意してください。

投稿2021/02/04 22:39

technocore

総合スコア7337

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

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

0

自己解決

私の場合はpythonの設定がPC内でめちゃくちゃになっているのが原因だったようです

pythonの公式サイトからインストールしたものと、pyenv経由でインストールしたものがあり
それぞれがつぎはぎで設定されていたため、根幹の原因は環境構築の失敗です
今回のjbpb0さんとのやりとりの中でその環境の問題点を解明していただきました
私は詳しく説明ができませんが、コメントの流れを確認し
ぜひ参考にしてください

投稿2021/02/04 21:51

blackw

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問