LoginSignup
orsobianco313
@orsobianco313

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

python 1年生 Libraryインストールエラー?

解決したいこと

python 1年生という書籍でpythonの勉強を始めています。

画像ファイルを読み込むところで
エラーが表示され、躓いてしまいました。
ネットで色々調べるのですが、m1 macということもあってか
適した情報が見つからず、エラー内容も把握できないため解決できずに困っております。

発生している問題・エラー

raceback (most recent call last):
File "/Users/********/Downloads/paython55/gazou.py", line 3, in
import PIL.Image
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/Image.py", line 109, in
from . import _imaging as core
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/_imaging.cpython-39-darwin.so, 2): no suitable image found. Did find:
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/_imaging.cpython-39-darwin.so: mach-o, but wrong architecture
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/_imaging.cpython-39-darwin.so: mach-o, but wrong architecture

該当するソースコード


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()

自分で試したこと

pyenvのインストール等を試しましたが、解決せず

/Library/Frameworks/Python.framework/Versions/3.9/
/System/Library/Frameworks/Python.framework/Versions/2.7/

ver3.9がsystem/library下にないことが問題なのでしょうか。

0

3Answer

まず pip3 list で Pillow が出てくることを確認します。もし出てこなかったら sudo pip3 install pillow でインストールします。

出てくる場合は ライブラリが不足しているかもしれません。
https://qiita.com/inosuke-hashibira/items/b660d895d45455689143
によると libjpeg ライブラリは brew でインストールする必要があるようです。

0Like

Comments

  1. @orsobianco313

    Questioner
    お返事遅くなり申し訳ありません。
    pip3 listでPillowは出てきました。

    brew install libjpegを入力したら、すでにインストールされている旨の記載でした。
    reinstallのコマンド記載があったので試したところ、下記のエラーが出ました。。

    Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
    To rerun under ARM use:
    arch -arm64 brew install ...
    To install under x86_64, install Homebrew into /usr/local.

    ずれてくるのですが、
    which python →Python 2.7.16
    which python3 →/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
    と表示される内容が異なることも、あっているのかどうかわかりかねています。
    初心者過ぎで申し訳ありませんが、ご教示いただけますと助かります。。
  2. すみません、@itagagaki さんのコメントの方が正しそうです。which コマンドは PATH 変数を見て判断するので差異は気にしなくても良いと思います。Mac は python2.7 が標準(python にリンクされている)なので、python3 系を使いたいときは python3 と明示的に入力する必要があります(これもリンクだが)。

Comments

  1. @orsobianco313

    Questioner
    ありがとうございます。
    エラーメッセージはそのまんま同じですね。。
    こちらのサイトは何度か拝見してました。

    英語なので読解しきれていない部分ありますが、

    In case this is helpful to anyone, here's a wheel I put together on my M1 -
    Pillow-8.0.1-cp39-cp39-macosx_11_0_arm64.whl.zip

    DLしました。

    python3 -m pip install Pillow-8.0.1-cp39-cp39-macosx_11_0_arm64.whl

    インストールできました。
    ※ただ、すでに何処かでDL済みだった8.2.0がアンインストールされました

    % python -V
    Python 2.7.16

    % pip3 -V
    pip 21.1.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

    python -VでVersion2.7が表示されるのが気になっています。
  2. pythonが2なのはすごく気になりますね。
    3もインストールしたんですよね?
    PATHの優先順位で2のほうが優先になっちゃっているんですかね。
    そこをなんとかしてみましょうか。
    面倒なら type python で場所を調べて、そこのpythonをリネームしちゃうのが手っ取り早いかもしれません。

初めまして、私も同じ本で勉強開始したばかりの超初心者です。全く同じ問題につまづき先に進む事ができません。この件は解決されましたでしょうか?解決されていた場合、どのような方法で解決となりましたでしょうか? また、この本はidleによる進行がなされていますが、外部ライブラリをインストールしてから反応しないためターミナルへコピペして実行しています。この方法で合っているのでしょうか?わかる事がありましたらご教授ください。

0Like

Comments

  1. @orsobianco313

    Questioner
    お返事遅くなりました。
    ぼちぼち色々試しながらやっているのですが、解決はしていません。
    私もすべてIDLEで実行したいと考えています。
    標準でインストールされているpython2を呼び出しに行ってしまうのでそこの解決なのだと捉えています。

    今の所画像認識ができないだけなので、パイソンでやりたいこと次第ではスルーして進めてしまうのもありなのかとも考えています。
  2. ありがとうございます。私は一年生とidleを諦めました。どこかの検索で見つけたanacondaからのjupyter Labでいじってます。idleに相当するものはcotEditorというのを使っています。2年生はこれでなんとか動いているので進んでみてます。動くのですが、意味がわかってません笑 私もぼちぼちやっていこうと思います。そのうちM1Macも動くようになりますよね、多分。早くidleからのpip3で動かしてみたいです!

Your answer might help someone💌