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

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

ただいまの
回答率

88.93%

Pygame zeroにおけるimport pgzrunのエラー表示をなくすためには

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 366

b0401078

score 7

前提・実現したいこと

Pythonで簡単なゲームを作ろうとしています

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

vc codeにおいて冒頭に「import pgzrun」と入力し、終わりを「pgzrun.go()」で閉じてファイルを作成し、実行したところ以下のメッセージが出てきました。
以下のエラーメッセージが出てきました。

エラーメッセージ

File "/Users/わたしの名前/Downloads/import pgzrun.py", line 1, in <module>
import pgzrun
ModuleNotFoundError: No module named 'pgzrun'

該当のソースコード

ソースコード


import pgzrun

WIDTH = 800

HEIGHT = 600

def draw():

screen.clear()

screen.draw.circle((400, 300), 30, 'white')

pgzrun.go()```

試したこと

ターミナルでは、pgzero Pygame python3.8.4が現行のバージョンでインストールされています。

あるpygame zeroのサイトでは以下のような案内があります↓
「しかし IDLE や Edublocks などの IDE 上からは python だと実行できますが、 pgzrun は実行できません。

Pygame Zero は python を使い、普通の Python プログラムとして実行する方法も提供しています。そうするにはまず、プログラムの冒頭に次の行を追加します」

ここに問題に対して試したことを記載してください。

IDLEではできないということで、vc codeをダウンロードして冒頭にimport pgzrunと入力しましたが、ダメでした。

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

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

File "/Users/わたしの名前/Downloads/import pgzrun.py", line 1, in <module>

ファイル名の所にコードが書かれてます?

出来れば、ファイル名はスペースを含まないようにしてください。
直接今回のエラー原因ではありませんが、他の問題に繋がります。

仮にファイル名 my_program.py として保存します。

まずはターミナルで動作確認、
python my_program.py として実行して見て下さい。
python の部分は環境に合わせて、ライブラリをインストールした環境のモノを使います。

ModuleNotFoundError: No module named 'pgzrun'
ターミナルでは、pgzero Pygame python3.8.4が現行のバージョンでインストールされています。

(確認)
何処にインストールして、
どのようにインストールされたことを確認しましたか?

インストール済みで ModuleNotFoundError が出る場合、IDEからは
ライブラリがインストールされてない環境のPythonが使われてます。

確認手順:

  • pgzeroが何処にインストールされたか確認しましょう
  • Pythonのバージョンを確認した後に、
  • ターミナルで python -c "import pgzrun"
  • IDLE等であれば、対話モードのところに import pygrun と打ち込んでみてください。

※ pgzrunは使い方が特殊なモジュールで、
Pythonファイル内から import されるのを想定していて、
そうでない場合は ImportError を出します。

ここで確認したいのは、pgzrunがインストールされているかどうかなので、
(対話環境では)ImportError が出るのが期待した動作です。
モジュールが見つからない場合は、ModuleNotFoundError が出ます。

対処方法:

  • VS code であれば環境切り替えができるはずです。
  • IDLE の場合は、ライブラリがインストールされた環境の IDLE を開きます
    python -m idlelib で IDLEを起動

IDLEではできないということで、vc codeをダウンロードして冒頭にimport pgzrunと入力しましたが、ダメでした。

IDE (IDLE や VS Code)で実行する場合の案内です。

詳細:
PyGame Zero のコードは、pgzrun コマンドにより実行するので
IDEで実行する場合は、実行時のコマンドを適切に設定する必要があります。

上記の import pgzrun と pgzrun.go() というのは、
PyGame Zero を使ったスクリプトを python コマンドで実行する場合の対応方法です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/23 17:39

    teamiklさま
    詳細にご回答いただきありがとうございます。
    これから始めるという時に環境構築で困っておりますが、いくつかお聞きしたいことがあります。

    1、何処にインストールして、
    どのようにインストールされたことを確認しましたか?

    わたしはターミナルで「pip install pgzero」と「pip install pygame」とインストールしましたが、それで完了ではないのでしょうか?今「which -a pygame」で、どこにあるかを入力したところ「pygame not found」と表示されましたが、これはインストールされてないということですか?pgzeroも同じでした。

    2、 IDLEとターミナルでのpythonバージョンが違っていますが、これはトラブルの原因になりますか?
       
      わたしのIDLEでは、3.8.5(今日改めてインストールしました)
      ターミナルでは3.8.2になっています。
      これは、このままでもいいのでしょうか?

    3、ファイル名の所にコードが書かれてます?
      
      ファイル名を「pgzrun.py」にしてターミナルで「python pgzrun.py」
     で試した所、「No such file or directory」ということで存在しないようなエラーがでました

    4、最後に・・・ターミナルで以下のように入力するとこのようなメッセージが出てきます。
    pip install pygameの場合
    「Requirement already satisfied: pygame in ./.pyenv/versions/3.8.2/lib/python3.8/site-packages (1.9.6)」


    pip install pgzeroの場合

    「Requirement already satisfied: pygame<2.0,>=1.9.2 in ./.pyenv/versions/3.8.2/lib/python3.8/site-packages (from pgzero) (1.9.6)
    Requirement already satisfied: numpy in ./.pyenv/versions/3.8.2/lib/python3.8/site-packages (from pgzero) (1.19.0)」

    長々と質問しまして大変恐縮ではありますが、これからプログラミングをやっていきたいと思っていて諦めようとは思っていません。どうかお付き合いのほど宜しくお願いします。

    キャンセル

  • 2020/07/24 12:10

    1.
    > 今「which -a pygame」で、どこにあるかを入力したところ「pygame not found」と表示されましたが、これはインストールされてないということですか?pgzeroも同じでした。

    これは witch コマンドの誤用です。インストールしたのは python のライブラリです。
    "pygame" や "pgzero" というコマンドをインストールした訳ではないので問題ありません。

    インストールした情報は以下の様に確認します
    pip show pygame
    pip show pgzero

    ----
    2. IDLEとターミナルでのpythonバージョンが違っていますが、これはトラブルの原因になりますか?

    バージョン違い自体はそのものは問題ありませんが、
    ライブラリがインストールされた環境違う事が問題になります。

    環境が異なる場合
    ターミナルでインストールしたライブラリを使うには、ターミナルからその環境のpythonを使います。

    IDLE上で使いたい場合は、2通り
    - IDLE環境を調べ、その環境にライブラリをインストールする
    - ターミナルの環境の IDLE を開く python -m idlelib

    ----
    3. ファイル名の所にコードが書かれて

    これはファイル名が「 "/Users/わたしの名前/Downloads/import pgzrun.py"」となっていたので、
    「import pgzrun」というコードをファイル名にしてるのかと思いました。
    スペース等は問題を起こしやすいので避けた方が良いです。
      
    >  ファイル名を「pgzrun.py」にしてターミナルで「python pgzrun.py」
    > で試した所、「No such file or directory」ということで存在しないようなエラーがでました

    モジュール名と同じファイル名にするとインストール時トラブルになります。

    自分で書くプログラムのファイル名は、任意でいいのですが
    とりあえずpygame zeroのチュートリアルに合わせて my_program.py としてください。

    ----
    4、最後に・・・ターミナルで以下のように入力するとこのようなメッセージが出てきます。

    インストール済みです、とでてます。

    原因は、IDLE環境とターミナル環境が違う事みたいですね。

    ファイル名を my_program.py として、回答に書いた、以下をお試しください。

    > まずはターミナルで動作確認、
    > python my_program.py として実行して見て下さい。

    普段使っている IDLE 環境で使いたい場合は、
    まず IDLE 環境の python が何処にあるかを調べましょう。
    対話モードに打ち込んでみてください

    >>> import sys
    >>> sys.executable

    キャンセル

  • 2020/07/25 18:44 編集

    teamiklさま

    ご回答ありがとうございます。

    本当は、ここが原因!というのが自分でわかった上で解決したかったのですが、そうもいかず、あれよあれよとできてしまいました。

    ご回答いただき本当にありがとうございました。

    キャンセル

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る