banben
@banben

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pip3 のインストールが上手く機能しているのかわかりません。

解決したいこと

pip3 install pygameが上手く機能しないことを解決したいです。

【経緯】
参考書を読みながらpygameを用いて、ゲーム作りをしようと頑張っています。
コマンドプロンプトに「pip3 install pygame」と入力すると参考書に記載があったので、試したのですが、数時間上手くいきませんでした。
以下に張ったコマンドプロンプトの画面に「already」と記載されているので、インストールは完了したのかと思い、実際にコードを入力したのですが、エラーが出てしまいました。
どこの段階でのミスか全然わかりません。
原因と解決方法を教えて頂きたいです。
発生している問題・エラーのところにコマンドプロンプトの画面とPythonの画面を貼っておきます。
まだ入社前の初心者なのでわからないことが多くて困っています。
この情報だけではわからないようでしたら教えて頂けると幸いです。
よろしくお願いします。

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

コマンドプロンプトの画面です。
image.png
Python(対話モード)の出力画面です。
image.png

該当するソースコード

Python(対話モード)に実際に入力したものです。
image.png

自分で試したこと

始めはエラーが出てpipのインストールもままらなかったので、数回コマンドプロンプトで入力を試しました。画面のコマンドプロンプトには「already」と出力されているので、既にインストールは完了したのかと考えています。

0

3Answer

画面のコマンドプロンプトには「already」と出力されているので、既にインストールは完了したのかと考えています。

はい、インストールは完了しています。 Requirement already satisfied というメッセージは分かりづらいですよね。モジュールをインストールする要求がすでに満たされている、という言い回しです。

対話モードというのは IDLE のことだと思いますが、 IDLE がモジュールを探す先のディレクトリと pygame のインストール先のディレクトリが異なるせいでエラーが出ている可能性があります。

(追記) 異なっている原因は、 @PondVillege さんが指摘されたように 32bit 版 IDLE を使っていながら 64bit 版 Python に pygame をインストールしたせいだと思われます。(追記ここまで)

pip3 install pygame を実行したとき表示されているように、 pygame のインストール先ディレクトリは C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages です(Windows ではパスの大文字小文字の違いは無視できます)。

IDLE がモジュールを探す先のディレクトリパスのリストは sys.path に入っています。以下のコードを IDLE で実行してリストの内容を確認してください。

import sys

for path in sys.path:
    print(path)

もしリストに入っていなければ、以下のように pygame のインストール先を sys.pathに追加するコードを先に書いてください。これでインポートできるようになると思います。

(追記) これは場当たり的な対応です。根本的に解決するにはこの方法ではなく1種類の Python を使うようにしたほうがいいです。(追記ここまで)

import sys
sys.path.append(r'C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages')

import pygame
2Like

Comments

  1. @banben

    Questioner

    こんばんは。この度はご回答していただきありがとうございます。
    返信が長文になってしまったため@PondVillege様への返信とまとめてしまいました。
    ご一読していただけると幸いです。

Pythonの実行環境で,既に32bit用のpythonと64bit用のpythonが入っているようですね.

最初に示していただいたコマンドプロンプトの画面冒頭では,

C:¥users¥Owner> pip3 install pygame
Requirement already satisfied: pygame in c:¥users¥owner¥appdata¥local¥programs¥python¥python38¥lib¥site-packages (2.1.2)

となっており,64bit版のpython3.8のライブラリファイルにインストールされているようです.
しかし,実行してエラーが出たときの画面冒頭には

== RESTART: C:¥Users¥Owner¥AppData¥Local¥Programs¥Python¥Python38-32¥tests.py ==

と表示されているではありませんか,python3.8-32は32bit版のようですね,そして先ほどは64bit版の方にpygameをインストールしました.

もちろん正常に64bit版の方にpygameはインストールされていますし,32bit版の方にはインストールされていないのでこのような状態になるというわけです.

結論

ライブラリをインストールするときは下記コマンドで行うようにしましょう.

$ python3 -m pip install pygame

banbenさんの書き方であればpip3を用いたpygameのインストール先は64bit版python3を指していましたが,プログラムを実行する際には32bit版を用いていました.この書き方であれば,プログラムを実行するpython3を用いてpipでインストールするため,先ほどのようなややこしい事態を避けることができます.

直らなければ教えてください.

なんで64bitCPUの時代に32bit版をインストールしたのかわかりませんが,とにかく今回はpython3が2つあることに起因するものです.

どのアプリ(コマンド)がどこにインストールされているか確認する手法としては,

$ where pip3
$ where python3

とコマンドプロンプトで実行してみれば良いでしょう.どこのpip3を実行するのか,どこのpython3を実行するのか調べてくれます.おそらく今回であればpip3は64bit版のフォルダを指し,python3は32bit版の方を指すのではないでしょうか.

また,実際に入力しようとしたソースコードですが,誤字脱字が多々あって動かなかったので,修正しておきました.

tests.py
import pygame
import sys

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

def main():
	pygame.init()
	pygame.display.set_caption("はじめてのPygame")
	screen = pygame.display.set_mode((800, 600))
	clock = pygame.time.Clock()
	font = pygame.font.Font(None, 80)
-	tmt = 0
+	tmr = 0

	while True:
		tmr += 1
		for event in pygame.event.get():
-			if event.type == pigame.QUIT:
+			if event.type == pygame.QUIT:
				pygame.quit()
				sys.exit()
		txt = font.render(str(tmr), True, WHITE)
		screen.fill(BLACK)
-		svreen.blit(txt, [300, 200])
+		screen.blit(txt, [300, 200])
		pygame.display.update()
-		clook.tick(10)
+		clock.tick(10)

if __name__ == "__main__":
	main()

画像でコードを載せていただくより,

```python
import pygame
import sys
def main():
  pygame.init()
  ...
```

のようにして書いていただくと,コピペもしやすくなりますので,Markdownの書き方もこの際学んでくれるとありがたいです.

ご健闘を祈ります.

2Like

Comments

  1. @banben

    Questioner

    長文の返信になってしまったため@uasi様への返信もまとめてしまいました。申し訳ございません。

    夜分遅くにご回答してくださりありがとうございます。
    また、返信が遅くなってしまったこと、お二人にまとめて返信してしまっていること、申し訳ございません。
    お二人のご回答を基に試行錯誤をしてみました。
    「32bit版にpygameのインストールが成功したのではないか」という私の現状把握が正しいのか教えていただきたいため長文で申し訳ないのですが、読んでいただけると幸いです。

    お二人のアドバイスを基にまずは「$ python3 -m pip install pygame」をコマンドプロンプトに入力をしてみました。
    しかし、「"$"が認識されていません。」のエラーが出てしまいました。
    原因は、質問後に自分で試行錯誤をしている中でファイルの場所を変えてしまったことor一度パソコンを閉じてしまったことだと仮説を立てました。
    そこで、そのエラーがでた時の対処法が参考書に記載されていたので、私の覚えている範囲でファイルの場所を戻して以下の手順でそれを試してみることにしました。

    (参考書を見ながら試したこと)
    エクスプローラーを開く。➡local diskを選択。➡右上の検索で「pip3.exe」と検索。➡pip38のプロパティを開き、場所を確認。
    ➡コマンドプロンプト上でcdコマンドを使ってpip38の場所に移動。➡そこで再び、「pip3 install pygame」を入力。
    すると下記の表示がコマンドプロンプトに出てきました。

    C:\Users\Owner>cd C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>pip3 install pygame
    Collecting pygame
    Downloading https://files.pythonhosted.org/packages/e8/22/7598526fdf76c4715202a28855d72a8a867386a3552c7bc438956a3f4291/pygame-2.1.2-cp38-cp38-win32.whl (8.1MB)
    |████████████████████████████████| 8.1MB 3.2MB/s
    Installing collected packages: pygame
    Successfully installed pygame-2.1.2
    WARNING: You are using pip version 19.2.3, however version 22.0.2 is available.
    You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>

    ➡32bit版のpythonの方でもダウンロードできたのでは?と考え、もう一度参考書を見ながらIDLEで試してみることにしました。

    '''python
    import pygame
    import sys

    WHITE=(255,255,255)
    BLACK=(0,0,0)

    def main():
    pygame.init()
    pygame.display.set_caption("はじめてのPygame")
    screen=pygame.display.set_mode((800,600))
    clock=pygame.time.Clock()
    font=pygame.font.Font(None,80)
    tmr=0


    while True:
    tmr = tmr + 1
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    pygame.quit()
    sys.exit()


    txt=font.render(str(tmr),True,WHITE)
    screen.fill(BLACK)
    screen.blit(txt,[300,200])
    pygame.display.update()
    clock.tick(10)

    if __name__ == '__main__':
    main()

    '''

    これを入力すると以下の状態になりました。

    '''python

    =========== RESTART: C:/Users/Owner/Desktop/python_game/try_again.py ===========
    pygame 2.1.2 (SDL 2.0.18, Python 3.8.2)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    >>>
    '''

    そして、初めてのPygameウィンドウが表示され、真っ黒の画面に数字が白でカウントアップされました。

    また、

    '''python
    import sys

    for path in sys.path:
    print(path)
    '''

    をIDLEで試した結果は以下でした。

    '''python
    ============= RESTART: C:/Users/Owner/Desktop/python_game/search.py ============
    C:/Users/Owner/Desktop/python_game
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Lib\idlelib
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\python38.zip
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\DLLs
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\lib
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\lib\site-packages
    '''

    最後に

    '''
    $ where pip3
    $ where python3
    '''

    をコマンドプロンプトで試したところ

    '''
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>$ where pip3
    '$' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>$ where python3
    '$' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    '''

    このような画面になりました。

    無知で誠に申し訳ないのですがこの状態は、「32bit版のPythonでもダウンロードでき、とりあえず32bit版でもpygameを使えるようにはなった」と考えてもよろしいのでしょうか?
    ご回答いただけると幸いです。
    長文失礼しました。
  2. ごめんなさい,私の表現方法が悪かったです.$はコマンドプロンプトの入力欄を示すもので,実際に入力していただく際はこの文字以降を入力してください.
    あと,ソースコードを載せるときですが,どうやらここのコメント欄ではMarkdownは機能しないということに加え,banbenさんの書き方がちょっと惜しいです.'(クォーテーション)ではなく`(バッククォート)です.
  3. @banben

    Questioner

    そうなんですね、私が知らなすぎただけです。ご丁寧にありがとうございます。
    試した結果エラーは出ず以下の表示がでました。

    ```
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>where pip3
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts\pip3.exe

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>where python3
    C:\Users\Owner\AppData\Local\Microsoft\WindowsApps\python3.exe
    ```
  4. ありがとうございます.
    どうやらpip3も32bit版のようですね,
    where python
    はどうなりますか?
    また,
    python3 -m pip install pygame

    python -m pip install pygame
    の結果はどうなりますでしょうか
  5. というか,32bit版へのインストール成功,おめでとうございます.IDLEで32bit版しか使わないのであれば,インストール先に気をつけて今後頑張っていただければと思います.
  6. @banben

    Questioner

    それぞれ以下のようになりました。

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>where python
    C:\Users\Owner\AppData\Local\Microsoft\WindowsApps\python.exe

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>python3 -m pip install pygame
    Python
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\Scripts>python -m pip install pygame
    Python
  7. なるほど,python3もpythonもどちらもそこに入っているのですね,IDLEが32bit版を指定して動かしているようですので,とりあえず,解決したと思って大丈夫そうです.お疲れ様でした.

    あと,
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32\
    にもpythonが入っていると思いますので,
    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32>python -m pip install pygame
    と実行するのとではまた異なる結果が得られそうです.
    なぜか最近のwindowsではプリインストールされているpythonを動かそうとするとpythonって文字が吐き出されるみたいです.ちゃんと動かすにはpyコマンドみたいですね.ややこしくてかないません.
  8. @banben

    Questioner

    ありがとうございます。とりあえず32bit版のインストール成功ということですね。
    実はPythonは参考書を3冊ほど買いまして、基本的には32bit版を使っているのですが、参考書のうちのひとつがジュピターノートを使う使用になっていたので、そのタイミングでPythonをインストールした結果、ややこしくなったのだと思います。

    C:\Users\Owner\AppData\Local\Programs\Python\Python38-32>python -m pip install pygame
    一旦は現状のまま使って、少し頭に余裕が生まれたら上記も試してみたいと思います。
    私もいつか誰かに教えられるように頑張ります。
    初心者の私に丁寧に教えていただき本当にありがとうございました。
  9. 私も通った道です,これからも頑張ってください.応援してます.
    最後に本質問をクローズにしていただければOKです.
  10. @uasi
    @banben
    @PondVillege さんへ
    pythonとpip3がネット喫茶のパソコンで動かなくて困っています。環境変数をいじれば良いというところまではわかっています。ネット喫茶のパソコンで設定を変えられるのか、成功した方、どうかご存じの方がいらしたら連絡ください。
    $ where pip3
    $ where python3
    はエラーが出ます。

This answer has been deleted for violation of our Terms of Service.

Your answer might help someone💌