pygame のインストール
〜 Windows10 版 〜
2020-10-30 作成 福島
2021-11-22 更新 福島
TOP > tips > pygame-win10


1. Python の有無を確認
PowerShell を実行
スタート (右クリック) から「Windows PowerShell(I)」を選択

Python が Microsoft Store からインストールされていないことが分かる。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> Get-AppxPackage -Name "*Python*"        # ストアアプリ検索コマンド
~ 何も表示されない ~
PS C:\Users\who> exit 


2. Microsoft Store から Python をインストール
2-1. スタート - Microsoft Store を選択し、python を検索する。

2-2. インストールアプリの選択画面 (1)
検索で発見された Python の最新をクリックする。
ここでは最新バージョンの 3.9 を選択する。

2-3. ボタンをクリックする。

2-4. Microsoft アカウントは特に必要ないので、 ボタンをクリックする。

2-5. インストールの終了を待つ。

2-6. インストール終了画面。
前の画面に戻るため「←」アイコンをクリックする。

2-7. インストールアプリの選択画面 (2)
Python 3.9 が「インストール済み」に変化した。

2-8. Python がインストールされたことを確認する。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> Get-AppxPackage -Name "*Python*" 

Name              : PythonSoftwareFoundation.Python.3.9
Publisher         : CN=4975D53F-AA7E-49A5-8B49-EA4FDC1BB66B
Architecture      : X64
ResourceId        :
Version           : 3.9.240.0
PackageFullName   : PythonSoftwareFoundation.Python.3.9_3.9.240.0_x64__qbz5n2kfra8p0
InstallLocation   : C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.240.0_x64__qbz5n2kfra8p0
IsFramework       : False
PackageFamilyName : PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0
PublisherId       : qbz5n2kfra8p0
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
NonRemovable      : False
IsPartiallyStaged : False
SignatureKind     : Store
Status            : Ok

PS C:\Users\who> exit 
Python (バージョン 3.9.240.0) がインストールされた。


3. pip で pygame をインストール
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> python -m pip install --upgrade pip          # 先に pip をアップグレードする
Collecting pip
  Downloading pip-20.2.4-py2.py3-none-any.whl (1.5 MB)
     |                                | 1.5 MB 2.2 MB/s
Installing collected packages: pip
  WARNING: The scripts pip.exe, pip3.9.exe and pip3.exe are installed in 'C:\Users\who\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\lo
cal-packages\Python39\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-20.2.4

PS C:\Users\who> python -m pip install pygame                # pygame をインストールする
Collecting pygame
  Downloading pygame-2.0.0-cp39-cp39-win_amd64.whl (5.1 MB)
     |                                | 5.1 MB 6.4 MB/s
Installing collected packages: pygame
Successfully installed pygame-2.0.0

PS C:\Users\who> python -c "import pygame; print(pygame.__file__)"                # pygame のバージョンと格納ディレクトリを確認する
pygame 2.0.0 (SDL 2.0.12, python 3.9.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
C:\Users\who\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pygame\__init__.py

PS C:\Users\who> exit 
※太字部分が pygame の格納ディレクトリ。
※注意: 実際の表示は太字になりません。


4. pygame のサンプルプログラムを確認
上記 3 で確認した格納ディレクトリ + "examples\" にサンプルプログラムが存在している。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> dir C:\Users\who\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pygame\examples\ 

    ディレクトリ: C:\users\who\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\pygame\examples

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2020/10/30     23:36                data
d-----       2020/10/30     23:36                __pycache__
-a----       2020/10/30     23:36           1062 aacircle.py
-a----       2020/10/30     23:36          12127 aliens.py
-a----       2020/10/30     23:36           3616 arraydemo.py
-a----       2020/10/30     23:36           1718 audiocapture.py
-a----       2020/10/30     23:36           3425 blend_fill.py
-a----       2020/10/30     23:36           6345 blit_blends.py
-a----       2020/10/30     23:36           2987 camera.py
-a----       2020/10/30     23:36           5931 chimp.py
-a----       2020/10/30     23:36           2879 cursors.py
-a----       2020/10/30     23:36           2240 dropevent.py
-a----       2020/10/30     23:36           5399 eventlist.py
-a----       2020/10/30     23:36           2410 fastevents.py
-a----       2020/10/30     23:36           2437 fonty.py
-a----       2020/10/30     23:36           9617 font_viewer.py
-a----       2020/10/30     23:36           4186 freetype_misc.py
-a----       2020/10/30     23:36          16846 glcube.py
-a----       2020/10/30     23:36           1301 headless_no_windows_needed.py
-a----       2020/10/30     23:36           2527 liquid.py
-a----       2020/10/30     23:36           5867 mask.py
-a----       2020/10/30     23:36          29424 midi.py
-a----       2020/10/30     23:36           1810 moveit.py
-a----       2020/10/30     23:36           9006 music_drop_fade.py
-a----       2020/10/30     23:36           1646 overlay.py
-a----       2020/10/30     23:36           3450 pixelarray.py
-a----       2020/10/30     23:36           4544 playmus.py
-a----       2020/10/30     23:36           2478 prevent_display_stretching.py
-a----       2020/10/30     23:36           4429 README.rst
-a----       2020/10/30     23:36           1086 resizing_new.py
-a----       2020/10/30     23:36           4852 scaletest.py
-a----       2020/10/30     23:36           3101 scrap_clipboard.py
-a----       2020/10/30     23:36           6571 scroll.py
-a----       2020/10/30     23:36           1774 setmodescale.py
-a----       2020/10/30     23:36           1158 sound.py
-a----       2020/10/30     23:36           5814 sound_array_demos.py
-a----       2020/10/30     23:36           2505 sprite_texture.py
-a----       2020/10/30     23:36           2748 stars.py
-a----       2020/10/30     23:36           7037 testsprite.py
-a----       2020/10/30     23:36           5450 textinput.py
-a----       2020/10/30     23:36           3262 vgrade.py
-a----       2020/10/30     23:36           4497 video.py
-a----       2020/10/30     23:36              0 __init__.py

PS C:\Users\who> exit 


5. pygame のサンプルプログラムを実行
上記 4 のサンプルプログラムの中から eventlist.py を実行する。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> python -m pygame.examples.eventlist 
~ 下記実行画面が表示される ~
PS C:\Users\who> exit 

この実行画面でマウスを動かしたり、キーを押したりすると「Status Area」中の文字が変化し、
その時何が起きているか「Event History Area」に表示される。


6. おまけ (pygame とは関係ないけど)
Microsoft Store からアプリ (Python) をインストールすると、実行ファイルはサイズ 0 のリンク情報となり、
Apache 等、プロセスに厳密なアプリケーションからは起動できません。
Apache のエラーログ (C:\Apache24\logs\error.log)
ファイル設置場所 : C:\Apache24\htdocs\hello.cgi
[Mon Nov 22 18:42:26.861694 2021] [cgi:error] [pid 5992:tid 1280] (OS 1920)ファイルにアクセスできません。
 : [client 127.0.0.1:50537] AH01223: couldn't spawn child process: C:/Apache24/htdocs/hello.cgi

XAMPP の場合 (C:\xampp\apache\logs\error.log)
ファイル設置場所 : C:\xampp\htdocs\hello.cgi
[Mon Nov 22 18:56:36.496861 2021] [cgi:error] [pid 2940:tid 1868] (OS 1920)ファイルにアクセスできません。
 : [client 127.0.0.1:51465] couldn't create child process: 721920: hello.cgi
[Mon Nov 22 18:56:36.496861 2021] [cgi:error] [pid 2940:tid 1868] (OS 1920)ファイルにアクセスできません。
 : [client 127.0.0.1:51465] AH01223: couldn't spawn child process: C:/xampp/htdocs/hello.cgi

hello.cgi の内容 (NG の例)
#!C:\Users\who\AppData\Local\Microsoft\WindowsApps\python.exe    ← エラーになる
# -*- coding: utf8 -*-

# CGI のテスト
print("Content-type: text/html\n")
print("Hello, Python")

実行ファイル (python.exe) のファイルサイズが 0 になっている。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> dir C:\Users\who\AppData\Local\Microsoft\WindowsApps\python.exe | Select-Object "Length","Name" 

Length Name
------ ----
     0 python.exe    ← ファイルサイズがゼロ

PS C:\Users\who> exit 
Microsoft Store のアプリの実体パスを確認する。
 >_ Windows PowerShell 
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\who> Get-AppxPackage -Name "*Python*" | Select-Object "InstallLocation" 

InstallLocation
---------------
C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.240.0_x64__qbz5n2kfra8p0    ← 実体パス 

PS C:\Users\who> exit 

確認した実体パスを使用してアプリ (python.exe) を指定する。
hello.cgi の内容 (OK の例)
#!C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.240.0_x64__qbz5n2kfra8p0\python.exe
# -*- coding: utf8 -*-

# CGI のテスト
print("Content-type: text/html\n")
print("Hello, Python")