IDLE上でpygameライブラリが読み込めない。
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,240
発生している問題・エラーメッセージ
プログラミング初心者、Pythonを先月から勉強し始めたものです。macOSでPython.org、IDLE、pip、anacondaのインストールを行い、IDLEをメインにコードの練習をしています。今回Pygameライブラリを読み込んだ所
Traceback (most recent call last):
File "/Users/MyName/Desktop/justwindow.py", line 2, in <module>
import pygame
ModuleNotFoundError: No module named 'pygame'
というエラーが発生してしまいました。MyNameの部分は私の名前でjustwindow.pyはファイル名です。以前もnumpyを読み込む際にも同じ様なエラーが発生してしまい
import sys; sys.executable # IDLEで実行
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8 -m pip install numpy #ターミナルで実行
この方法を実行することによって読み込みができました。おそらくこのmacOSにpipとanacondaのディストリビューションで重複したPythonやnumpyがあったことが原因だと思っています。この方法が今回も使えると思いnumpyの部分をpygameに変更して同じ様に実行したところとても長い文章のエラーが出てしまいました。
試したこと
https://teratail.com/questions/262126
解決策を探していた所、上記リンクのteratailの質問に行き着きpathを調べました。その結果ターミナル上のPythonとIDLEでは起動されるpathとバージョンが違うこと、ターミナル上でのPythonではpygameをインポート出来るということが分かりました。pipとanacondaをインストールしたロケーションが正しい場所ではなかったのかという考えも浮かびました。
import sys; sys.executable
sys.path
を試し、IDLE上では
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
/Users/MyName/Desktop', '/Users/MyName/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', '/Users/MyName/Library/Python/3.8/lib/python/site-packages', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
ターミナル上のPythonでは
/Users/MyName/opt/anaconda3/bin/python
'', '/Users/MyName/opt/anaconda3/lib/python37.zip', '/Users/MyName/opt/anaconda3/lib/python3.7', '/Users/MyName/opt/anaconda3/lib/python3.7/lib-dynload', '/Users/MyName/opt/anaconda3/lib/python3.7/site-packages', '/Users/MyName/opt/anaconda3/lib/python3.7/site-packages/aeosa'
という結果になりました。これらを見る限りIDLE上ではPython.orgでインストールしたpath、ターミナル上ではanacondaを使ったPythonのpathが使われてしまいそれぞれバラバラのPythonが開かれてしまっています。ということはanacondaのPythonをIDLEで開ければimportも使える、もしくはPython.orgのpathにanacondaをどうにかインストール出来ればPygameをIDLE上で読み込めるのではないかと考えました。ちなみにPygameのバージョンはpip、anaconda共に1.9.6でした。ここまでは何とか調べられたのですがpathの変更法、環境構築などはまだ初心者の為にお手上げです。
実現したいこと
IDLE上でimport pygameを読み込むこと、そしてそのIDLEをIDLEPython.orgのpathもしくはanacondaのPathどちらかに統合したもので開きけるようにし、今後はmacOSに入っているダウンロードした全てのライブラリを基本的にエラーを発生させず簡単に呼び出せるようにしたいです。長文になりまして申し訳ございませんがよろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
この方法が今回も使えると思いnumpyの部分をpygameに変更して同じ様に実行したところとても長い文章のエラーが出てしまいました。
エラーはインストール時でしょうか?
それとも、pygameを使って書いたスクリプトの実行時でしょうか?
インストール時であれば別問題かもしれませんが、
公式のものは問題が報告されてます。
Pygame not compatible with MacOS Mojave #555
Python3.8では pygame2.0で動作報告があるので
同じ方法でバージョンを指定を試してみてください。
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8 -m pip install pygame==2.0.0.dev10 #ターミナルで実行
インストール時の問題について
wikipedia によると サポートするPythonのバージョン は
pygame 1.9.xは、Python 2.7と、Python 3.4からPython 3.7まで。
pygame 2は、Python 3.4からPython 3.8をサポートする。Python 2.7のサポートも当面継続。
pypiのDownload filesリスト に osx用の 3.8はありません。
pygameがインストールされた環境の IDLEを開く
> /Users/MyName/opt/anaconda3/bin/python -m idlelib
で、その環境の IDLE を使えます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2020/07/16 14:56
ここでまたしても質問させて頂ければと思うのですが、今回のような教えて頂いたバージョン指定や、 idlelibを使った開き方などの環境設定方法はプログラミングのどういった分野を学べば理解が進み、詳しくなれるのでしょうか?度々の質問になってしまいますが書籍やウェブサイト等、参考になるものを教えて頂ければと思います。
2020/07/16 17:47
書籍やウェブサイトは第三者がまとめた情報ですが、理解を進める~という点に於いて
そこから一歩先と解釈すると、自分でそれらの情報元を探す手段を持つこと、自身で情報を纏める事。
- https://pip.pypa.io/en/stable/user_guide/ バージョン指定
他に、どういった仕組みでpipでライブラリがインストールされるか等の情報も、
インストール時の問題を解決する上で役立つ事があります。
- https://docs.python.org/ja/3/using/cmdline.html#command-line コマンドラインオプション
- https://docs.python.org/ja/3/library/idle.html IDLEの開き方 (python -m idlelib)
IDLEの開き方に関しては、IDLEのコードを読んだことがあったので知ったのですが、
ドキュメントにも、IDLE起動時にエラーが出て開けない場合の、
ターミナルから起動して起動時のエラーを確認する方法として書かれてます。
----
どのような分野と言われると返答は難しいですが、学習方法に関しては持論を持っていて
指針として言うなら「内部への興味をもつ事」でしょうか。
ライブラリや処理系のソースのコードリーディングがお勧め。
一例を挙げると、pygameであれば、内部で使われているライブラリの SDL を使って
C言語でプログラムを書いた事はあります。
また、pygameを使わず Python から SDL を利用する方法も複数学びました。
その上で pygame を使うと、例えばサンプルコード等を探すときに
pygame のコードだけでなく SDL を用いた他の言語のコードも参考に出来るようになるので
活用できる情報の量が何倍にも膨れ上がります。この観点から英語とC言語はとても役立ちます。
コードリーディングの取っ掛かりとしては、
コマンドラインから起動できるものが他にもあるので、
ライブラリのディレクトリを探して、覗いてみるのも良いかもしれません。
- if __name__ == "__main__": がある .py ファイル (dis, timeit, http.server, )
- __main__.py があるディレクトリ (turtledemo, unittest, venv, ensurepip, )
- pygameであれば、python -m pygame.examples.aliens 他 examples ディレクトリ以下に多数
バグ報告等に関しては、
github 上のプロジェクトなら issue tracker に情報が集まってるので、
オープンソース系のプロジェクトでの開発を実際に見たり参加すると、
その辺りの事情には詳しくなると思います。
2020/07/20 03:07
2020/07/20 12:38
応用範囲の広い基礎を抑えておくことは、
長期的には、大きな時間の節約に繋がりますね。
自分から探す(能動的)という点も意識してます→ アクティブラーニング
余談ですが、エッセイを思い出したので紹介。
古いものですが、今でも通じる部分はあると思います。
Peter Norvig 氏のエッセイ
プログラミングを独習するには10年かかる
https://www.yamdas.org/column/technique/21-daysj.html
> 今後のプログラミングライフを謳歌していきたい
上記のエッセイでも触れてるのですが、これが一番大切なことだと思います。
楽しみながら自然と身についているのが理想ですよね
2020/09/10 10:31
かなりプライベートな話ですが今月よりJava、Pythonを集団で学べる環境に身を置くことができました。自分の時間ができた時はアクティブラーニングを意識して応用範囲の広い基礎を抑えようと何とかやっております。
Peter Norvig 氏のエッセイのリンクありがとうございました。読ませていただきましたがプログラミングに限らず物事の精進には大きい代償が必要ということは痛いほど分かりますので、挫折しそうな際には読み返させていただこうと思っております。
繰り返しになりますが、ご丁寧な返信ありがとうございました!