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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python

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

Q&A

解決済

2回答

798閲覧

Pythonのモジュールimportについてのエラー

akito.h

総合スコア2

Python

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

0グッド

0クリップ

投稿2020/06/10 14:36

編集2020/06/10 14:38

前提・実現したいこと

Python1年生という書籍で勉強している初心者です

ここに質問の内容を詳しく書いてください。
表題の書籍で初歩的な勉強をしています。
135ページに記載のコードを書いておりますが、エラーが出てしまいます。
ターミナルでpip3 install pillowを入れると以下のコードが返ってきます。

Requirement already satisfied: pillow in ./.pyenv/versions/3.6.5/lib/python3.6/site-packages
You are using pip version 9.0.3, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

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

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

該当のソースコード

import tkinter as tk
import tkinter.filedialog as fd
import PIL.Image
import PIL.ImageTk

def dispPhoto(path):
newImage=PIL.Image.open(path).resize((300,300))
imageData=PIL.ImageTk.PhotoImage(newImage)
imageLabel.configure(image=imageData)
imageLabel.image=imageData

def openFile():
fpath=fd.askopenfilename()
if fpath:
dispPhoto(fpath)

root=tk.Tk()
root.geometry("400x350")

btn=tk.Button(text="ファイルを開く",command=openFile)
imageLabel=tk.Label()
btn.pack()
imageLabel.pack()
tk.mainloop()

試したこと

モジュールをimportするところでエラーメッセージが出てしまいます。
恥ずかしながら超初心者なので、解決できませんでした。

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

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

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/06/10 15:14

ターミナルで python -V python と打つと結果はどうなりますか?
akito.h

2020/06/10 16:20 編集

それぞれ、 Python 3.7.6 と Python 3.7.6 (default, Jan 8 2020, 13:42:34) [Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin Type "help", "copyright", "credits" or "license" for more information. >>> とでます。 idleでは、Python3.8.3 shellとなるので、この辺りが原因でしょうか?
退会済みユーザー

退会済みユーザー

2020/06/10 16:38

あれ、anacondaのpythonが実行されてますね。 実行している環境とpillowをインストールしている環境が違うのでは? https://teratail.com/questions/262543 anacondaの方にpillowを入れたら上手くいくかもしれません。
akito.h

2020/06/11 14:13

ありがとうございます。その記事は以前見ました。 ただ、どうにも以下の部分のやり方がわからず・・・ コマンドプロンプトから実行すればPillowが認識されるはずです。 また、IDLEでも起動するシェルをPython3.8の方に切り替えられればエラーは解消すると思います。私はIDLEを使ってないのでシェルの切り替えについては調べてみてください。
guest

回答2

0

ベストアンサー

pyenvでpythonをインストールしているのでしたら、コマンド名は
pythonとpipで良いです。わざわざ「3」をつける必要はありません。

python is /Users/ユーザ名/.pyenv/shims/python
pip is /Users/ユーザ名/.pyenv/shims/pip

python3とかpip3と実行すると、別の場所にインストールされている
pythonが実行される可能性がありますので、やめたほうがいいです。

投稿2020/06/10 15:14

technocore

総合スコア7337

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

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

akito.h

2020/06/10 16:10

ありがとうございます。 % pip install pillow で実行しても、以下がでます。 Requirement already satisfied: pillow in ./opt/anaconda3/lib/python3.7/site-packages (7.0.0) (base) XXX@MacBook-Pro ~ % 理解が違っておりましたら申し訳ありません。ご指摘ください。
technocore

2020/06/10 22:35

pyenvとanacondaが同居していて、環境がおかしくなっています。 どちらを使うのかはっきりさせましょう。 まず、あなたのpython環境を再確認しましょう。 $ type -a python $ type -a pip で実行されるpython/pipがある場所を確認してください。 表示結果は、あなたが使いたいpythonですか?
akito.h

2020/06/11 14:09

python is /Users/ユーザー名/opt/anaconda3/bin/python python is /Users/ユーザー名/.pyenv/shims/python python is /usr/bin/python pip is /Users/ユーザー名/opt/anaconda3/bin/pip pip is /Users/ユーザー名/.pyenv/shims/pip このように表示されます。anacondaを残したいと思っております。
technocore

2020/06/11 14:21

pythonもpipも、anaconda3のコマンドが最優先になってますのでOKです。 pyenvを環境変数PATHから外しましょう。 ちなみに、/usr/bin/pythonはMacOS標準のPythonです。 /usr/binはPATHに含める必要があるので、これは外しようがないです。 anacondaの場合、パッケージはcondaコマンドを使うのが基本です。 condaコマンドでインストールできない場合に限り、pipコマンドでインストールします。
akito.h

2020/06/11 14:26

ありがとうございます。調べながら見様見真似でpyenvをアンインストールしたら、無事importができるようになりました。今後コマンドについても頭に入れておきます。ありがとうございました。
technocore

2020/06/11 14:32

>pyenvをアンインストールしたら アンインストールだけでなく、pyenvを環境変数PATHから外しましたか? 余計なPATHを残しておくとトラブルの元ですから。
guest

0

PILはPython本体には含まれないパッケージなのでこれに従って入れてみてください。

pip自体のバージョンが古すぎるようなので、pip3 install --upgrade pipを先に実行してみてください。

投稿2020/06/10 14:39

編集2020/06/10 14:46
kuuote

総合スコア705

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

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

akito.h

2020/06/10 14:51

ありがとうございます。以下のように出ました。 Collecting pip Downloading https://files.pythonhosted.org/packages/43/84/23ed6a1796480a6f1a2d38f2802901d078266bda38388954d01d3f2e821d/pip-20.1.1-py2.py3-none-any.whl (1.5MB) 100% |████████████████████████████████| 1.5MB 858kB/s Installing collected packages: pip Found existing installation: pip 9.0.3 Uninstalling pip-9.0.3: Successfully uninstalled pip-9.0.3 Successfully installed pip-20.1.1 (base) XXX@MacBook-Pro ~ % 再度idleから実行してみましたが、やはりエラーコードはそのままです。
kuuote

2020/06/10 14:53

pip3 install pillowも実行しました?
akito.h

2020/06/10 14:55

はい、 % pip3 install pillow Requirement already satisfied: pillow in ./.pyenv/versions/3.6.5/lib/python3.6/site-packages (7.1.2) (base) XXX@MacBook-Pro ~ % となり、idleから実行しても ================ RESTART: /Users/XXX/Documents/dispimage1.py =============== Traceback (most recent call last): File "/Users/XXX/Documents/dispimage1.py", line 3, in <module> import PIL.Image ModuleNotFoundError: No module named 'PIL' と出てしまいます。
kuuote

2020/06/10 15:05

idleはpyenv経由で起動してます?(ライブラリ自体は入っているみたいなので疑うならこのへんかなと思います)
akito.h

2020/06/10 16:05

ごめんなさい、pyenv経由の起動方法がわからないのですが、アプリケーション一覧のpythonから入って起動しています。
kuuote

2020/06/10 16:10

pyenvが有効になっているターミナルでpython -m idlelib.idleを立ち上げてそこから実行するか、直接スクリプトを実行したら上手くいかないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問