0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows10 64bit Python 3.10.x へのKivy 2.x開発環境の構築手順

Last updated at Posted at 2021-12-31

https://ja.wikipedia.org/wiki/Kivy ってなに?って人は一度ここのギャラリhttps://pyky.github.io/kivy-doc-ja/examples/gallery.html とか Python Kivyのexample配下を整理してみたを観るとよいと思います。

Kivy 2.0.0のPython 3.10をサポートしていなかったときの記事です。Kivy 2.1.0はPython 3.7-3.10をサポートしています。

#概要
Kivy(Android、iOS、Linux、MacOS X、Windows上のクロスプラットフォームで動作)の2.0.0 releasesによればPythonのサポートバージョンは3.6から3.9.となっています。Windwos10上のPython 3.10.xでkivyをインストールしようとすると、

Code and Logs and screenshots
Examples of errors:

ERROR: Could not find a version that satisfies the requirement kivy_deps.gstreamer_dev~=0.3.1 (from versions: none)
ERROR: No matching distribution found for kivy_deps.gstreamer_dev~=0.3.1...

issues#7654

のように

(venv_dir) python -m pip install kivy[base]==2.0.0
Collecting kivy[base]==2.0.0
  Using cached Kivy-2.0.0.tar.gz (23.7 MB)
  Installing build dependencies ... error
  ERROR: Command errored out with exit status 1:
   command: 'python.exe' 'pip' install --ignore-installed --no-user --prefix 'Temp\pip-build-env-mgjhh2_q\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel 'cython>=0.24,<=0.29.21,!=0.27,!=0.27.2' 'kivy_deps.gstreamer_dev~=0.3.1; sys_platform == "win32"' 'kivy_deps.sdl2_dev~=0.3.1; sys_platform == "win32"' 'kivy_deps.glew_dev~=0.3.0; sys_platform == "win32"' 'kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"' 'kivy_deps.sdl2~=0.3.1; sys_platform == "win32"' 'kivy_deps.glew~=0.3.0; sys_platform == "win32"'
       cwd: None
  Complete output (10 lines):
  Collecting setuptools
    Using cached setuptools-60.2.0-py3-none-any.whl (953 kB)
  Collecting wheel
    Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
  Collecting cython!=0.27,!=0.27.2,<=0.29.21,>=0.24
    Using cached Cython-0.29.21-py2.py3-none-any.whl (974 kB)
  Collecting kivy_deps.gstreamer_dev~=0.3.1
    Using cached kivy_deps.gstreamer_dev-0.3.2-cp310-cp310-win_amd64.whl (3.9 MB)
  ERROR: Could not find a version that satisfies the requirement kivy_deps.sdl2_dev~=0.3.1 (from versions: 0.4.2, 0.4.3)
  ERROR: No matching distribution found for kivy_deps.sdl2_dev~=0.3.1
  ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/.../Kivy-2.0.0.tar.gz#... (from https://pypi.org/simple/kivy/). Command errored out with exit status 1: 'python.exe' 'pip' install --ignore-installed --no-user --prefix 'Temp\pip-build-env-mgjhh2_q\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel 'cython>=0.24,<=0.29.21,!=0.27,!=0.27.2' 'kivy_deps.gstreamer_dev~=0.3.1; sys_platform == "win32"' 'kivy_deps.sdl2_dev~=0.3.1; sys_platform == "win32"' 'kivy_deps.glew_dev~=0.3.0; sys_platform == "win32"' 'kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"' 'kivy_deps.sdl2~=0.3.1; sys_platform == "win32"' 'kivy_deps.glew~=0.3.0; sys_platform == "win32"' Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement kivy[base]==2.0.0 (from versions: 1.0.1a0, 1.0.2a0, 1.0.3a0, 1.0.4b0, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.11.0rc1, 1.11.0rc2, 1.11.0, 1.11.1, 2.0.0rc1, 2.0.0rc2, 2.0.0rc3, 2.0.0rc4, 2.0.0)
ERROR: No matching distribution found for kivy[base]==2.0.0

となり依存関係により、インストールができません。

リリース版で依存関係の制約が解除されると次のような操作で一式がインストールできるはずです。

ex.
C:> python -m pip install kivy[base,media,tuio] kivy_examples --no-binary kivy
or
C:> python -m pip install kivy[base] kivy_examples --no-binary kivy
or
C:> python -m pip install kivy[sdl2] kivy_examples --no-binary kivy

Python並びにKivyのサポートバージョンを合わせることで解決できますが、開発途中の状況で開発を続けたい人のための環境構築手順についての資料です。

なおこの手順はkivyのみの開発環境について記載していますので、関係する依存関係のものを開発する場合は適宜手法を適用してください。

参考にした情報

##前提環境

#構築手順

##環境確認

gitの版数確認

cmdプロンプト下
C:> git --version
git version 2.34.1.windows.1

Visual Studio 2022 Build Toolsの設定

cmdプロンプト下
C:>  "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat"

vcvarsall.batにオプションをつけないとヘルプを得られます。

Pythonインストーラでデフォルトで入れていない人の確認事項

PythonインストーラではPATH変数はインストーラで設定せずに後から個別に設定したほうが未知の影響から逃れるため良いかもしれないと思われている方は、この節を見ながら環境を確認して個別に開発環境毎のPATH変数を設定してください。
PythonのWindowsでPython を使う資料を熟知している方は軽く読み流して下さい。

PATHが通っていない場合(引数あり)
C:> python --version
Python

Pythonという文字列が返ってくる。

PATHが通ってない場合(引数無し)
C:> python

Microsoft Storeが起動する。

Windowsで導入したpythonの状況を確認する
C:> py --list
Installed Pythons found by py Launcher for Windows
 -3.10-64 *
C:> py --list-paths
Installed Pythons found by py Launcher for Windows
 -3.10-64       %LOCALAPPDATA%\Programs\Python\Python310\python.exe *

PATH変数には上記を参考に次の値などを追加すること
%LOCALAPPDATA%\Programs\Python\Python310\Scripts
%LOCALAPPDATA%\Programs\Python\Python310

その他有益な情報が「Pythonが動かない…」の簡単な解決方法(Windows)などに記載されているようです。

PATHが通ってる場合
(venv_dir) C:> python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec  6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> quit();

(venv_dir) >

Pythonの版数確認

C:> ver
Microsoft Windows [Version 10.0.19044.1415]
C:> wmic os get osarchitecture
OSArchitecture
64 ビット
C:> python --version
Python 3.10.1
C:> python -m pip list
Package    Version
---------- -------
pip        21.2.4
setuptools 58.1.0
WARNING: You are using pip version 21.2.4; however, version 21.3.1 is available.
You should consider upgrading via the '%PythonInstallPath%\Python\Python310\python.exe -m pip install --upgrade pip' command.

C:> python -m pip list -o
Package    Version Latest Type
---------- ------- ------ -----
pip        21.2.4  21.3.1 wheel
setuptools 58.1.0  60.2.0 wheel
WARNING: You are using pip version 21.2.4; however, version 21.3.1 is available.
You should consider upgrading via the 'C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python310\python.exe -m pip install --upgrade pip' command.

%PythonInstallPath%や%USERNAME%はインストール環境によって違います。そして変数は展開されています。

##Python venv仮想環境の作成(初回だけ)

Python venvを使って仮想環境を作りましょう。Installing Kivy — Kivy 2.0.0 documentationではvirtualenvを使っていますのでそちらの方が良いかも入れませんが、Python的にはvenvが推奨だといもいます。https://docs.python.org/ja/3/installing/index.html

C:> python -m venv ./venv_dir

venv_dir配下に仮想環境が構築されます。

##Python venv仮想環境の有効化

C:> venv_dir\Scripts\activate.bat
(venv_dir) > 

コマンドプロンプトが変化します

この仮想環境下で作業する限りPythonで他のプロダクトにお互い影響なく作業ができます。

Kivy 2.0.0の依存を仮想環境にインストール

コマンドプロンプトが仮想環境に変化していることを確認
(venv_dir) > 
次のコマンドを投入します
python -m pip install --upgrade pip
python -m pip install -U Cython wheel setuptools docutils pygments pypiwin32
python -m pip install kivy.deps.sdl2     kivy.deps.glew
python -m pip install kivy.deps.sdl2_dev kivy.deps.glew_dev
python -m pip install kivy.deps.gstreamer
python -m pip install kivy.deps.gstreamer_dev
python -m pip install kivy_examples

仮想環境のインストール状況を確認

(venv_dir) > pip list
Package                 Version
----------------------- -------
Cython                  0.29.26
docutils                0.18.1
kivy-deps.glew          0.3.0
kivy-deps.glew-dev      0.3.0
kivy-deps.gstreamer     0.3.2
kivy-deps.gstreamer-dev 0.3.2
kivy-deps.sdl2          0.4.3
kivy-deps.sdl2-dev      0.4.3
Kivy-examples           1.11.1
pip                     21.3.1
Pygments                2.10.0
pypiwin32               223
pywin32                 303
setuptools              60.2.0
wheel                   0.37.1

(venv_dir) > pip list -o
Package       Version Latest Type
------------- ------- ------ -----
Kivy-examples 1.11.1  2.0.0  wheel

dev環境の構築

リリース版での依存関係のロックを解除するための編集

当然、サポートバージョンではありませんのでサポート外です。issuesを上げるときは留意しましょう。

gitからkivyを取り出します
git clone https://github.com/kivy/kivy

冒頭のエラーは次のファイルに記載の依存関係の版数情報と、コンパイル済の提供状況によって発生しています。
kivy\pyproject.toml
kivy\setup.cfg

kivy\pyproject.tomlファイル
@@ -1,15 +1,15 @@
 [build-system]
 requires = [
     "setuptools", "wheel",
-    "cython>=0.24,<=0.29.21,!=0.27,!=0.27.2",
-    'kivy_deps.gstreamer_dev~=0.3.1; sys_platform == "win32"',
-    'kivy_deps.sdl2_dev~=0.3.1; sys_platform == "win32"',
-    'kivy_deps.glew_dev~=0.3.0; sys_platform == "win32"',
-    'kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"',
-    'kivy_deps.sdl2~=0.3.1; sys_platform == "win32"',
-    'kivy_deps.glew~=0.3.0; sys_platform == "win32"',
+    "cython",
+    'kivy_deps.gstreamer_dev; sys_platform == "win32"',
+    'kivy_deps.sdl2_dev; sys_platform == "win32"',
+    'kivy_deps.glew_dev; sys_platform == "win32"',
+    'kivy_deps.gstreamer; sys_platform == "win32"',
+    'kivy_deps.sdl2; sys_platform == "win32"',
+    'kivy_deps.glew; sys_platform == "win32"',
 ]
 
 [tool.pytest.ini_options]
 addopts = "--benchmark-skip --benchmark-warmup=on --benchmark-warmup-iterations=5 --benchmark-disable-gc --benchmark-name=short --benchmark-sort=mean --benchmark-group-by=fullfunc --benchmark-storage=.benchmarks-kivy --benchmark-save=kivy"
 markers = "incremental: mark a test as incremental."

 ]
kivy\setup.cfgファイル
@@ -24,64 +24,64 @@ concurrency = thread, multiprocessing
 python_requires = >=3.6
 install_requires =
     Kivy-Garden>=0.1.4
     docutils
     pygments
-    kivy_deps.angle~=0.3.0; sys_platform == "win32"
-    kivy_deps.sdl2~=0.3.1; sys_platform == "win32"
-    kivy_deps.glew~=0.3.0; sys_platform == "win32"
+    kivy_deps.angle; sys_platform == "win32"
+    kivy_deps.sdl2; sys_platform == "win32"
+    kivy_deps.glew; sys_platform == "win32"
     pypiwin32; sys_platform == "win32"
 dependency_links = https://github.com/kivy-garden/garden/archive/master.zip
 
 [options.extras_require]
 tuio = oscpy
 dev =
     pytest>=3.6
     pytest-cov
-    pytest_asyncio!=0.11.0
+    pytest_asyncio
     pytest-timeout
     pytest-benchmark
     pyinstaller
     sphinx
     sphinxcontrib-blockdiag
     sphinxcontrib-seqdiag
     sphinxcontrib-actdiag
     sphinxcontrib-nwdiag
-    kivy_deps.gstreamer_dev~=0.3.1; sys_platform == "win32"
-    kivy_deps.sdl2_dev~=0.3.1; sys_platform == "win32"
-    kivy_deps.glew_dev~=0.3.0; sys_platform == "win32"
+    kivy_deps.gstreamer_dev; sys_platform == "win32"
+    kivy_deps.sdl2_dev; sys_platform == "win32"
+    kivy_deps.glew_dev; sys_platform == "win32"
     flake8
     pre-commit
 base =
     pillow
     docutils
     pygments
-    kivy_deps.angle~=0.3.0; sys_platform == "win32"
-    kivy_deps.sdl2~=0.3.1; sys_platform == "win32"
-    kivy_deps.glew~=0.3.0; sys_platform == "win32"
+    kivy_deps.angle; sys_platform == "win32"
+    kivy_deps.sdl2; sys_platform == "win32"
+    kivy_deps.glew; sys_platform == "win32"
     pypiwin32; sys_platform == "win32"
 media =
-    kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"
+    kivy_deps.gstreamer; sys_platform == "win32"
     ffpyplayer; sys_platform == "linux" or sys_platform == "darwin"
 full =
     pillow
     docutils
     pygments
-    kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"
-    kivy_deps.angle~=0.3.0; sys_platform == "win32"
-    kivy_deps.sdl2~=0.3.1; sys_platform == "win32"
-    kivy_deps.glew~=0.3.0; sys_platform == "win32"
+    kivy_deps.gstreamer; sys_platform == "win32"
+    kivy_deps.angle; sys_platform == "win32"
+    kivy_deps.sdl2; sys_platform == "win32"
+    kivy_deps.glew; sys_platform == "win32"
     ffpyplayer; sys_platform == "linux" or sys_platform == "darwin"
     pypiwin32; sys_platform == "win32"
 gstreamer =
-    kivy_deps.gstreamer~=0.3.1; sys_platform == "win32"
+    kivy_deps.gstreamer; sys_platform == "win32"
 angle =
-    kivy_deps.angle~=0.3.0; sys_platform == "win32"
+    kivy_deps.angle; sys_platform == "win32"
 sdl2 =
-    kivy_deps.sdl2~=0.3.1; sys_platform == "win32"
+    kivy_deps.sdl2; sys_platform == "win32"
 glew =
-    kivy_deps.glew~=0.3.0; sys_platform == "win32"
+    kivy_deps.glew; sys_platform == "win32"
 
 [flake8]
 ignore = E125,E126,E127,E128,E402,E741,E731,W503,F401,W504,F841,E722
 max-line-length = 80
 exclude = __pycache__,.tox,.git/,doc/,build/,.eggs/

Visual Studio 2022 Build Toolsの設定

(venv_dir) > "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.8
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

x64でコンパイルできる環境を設定します。
さらに次の環境変数を追加設定します。

set MSSdk=1
set DISTUTILS_USE_SDK=1
set LIB=%cd%\libs;%LIB%
set INCLUDE=%cd%\include;%INCLUDE%

set USE_SDL2=1
set USE_GSTREAMER=0
:: optionally
set USE_GSTREAMER=1

##仮想環境に依存関係を排除した状態でインストールします。

(venv_dir) > python -m pip install -e kivy\.

pip install に-eをつけることでdevelopment_modeでモジュールをインストールすることができます。
https://pip.pypa.io/en/stable/cli/pip_install/#

最終的には、こんな感じで kivy 2.x が導入できます。

(venv_dir) > python -m pip install -U kivy_examples
(venv_dir) > pip list
Package                 Version    Editable project location
----------------------- ---------- ---------------------------------------
certifi                 2021.10.8
charset-normalizer      2.0.9
Cython                  0.29.26
docutils                0.18.1
idna                    3.3
Kivy                    2.1.0.dev0 c:\foo\bar\kivy
kivy-deps.angle         0.3.0
kivy-deps.glew          0.3.0
kivy-deps.glew-dev      0.3.0
kivy-deps.gstreamer     0.3.2
kivy-deps.gstreamer-dev 0.3.2
kivy-deps.sdl2          0.4.3
kivy-deps.sdl2-dev      0.4.3
Kivy-examples           1.11.1
Kivy-Garden             0.1.4
pip                     21.3.1
Pygments                2.11.0
pypiwin32               223
pywin32                 303
requests                2.26.0
setuptools              60.2.0
urllib3                 1.26.7
wheel                   0.37.1

(venv_dir) > pip list -o

##Kivy のデモンストレーションを起動してみます。

(venv_dir) > SET KIVY_GL_BACKEND=angle_sdl2
(venv_dir) > python venv_dir\share\kivy-examples\demo\showcase\main.py

#test
https://pyky.github.io/kivy-doc-ja/contribute-unittest.html は環境が古い時の記載なので

Python pytestPython nose2でテストを実行する。

pip install nose2
pip install pytest
nose2 -v kivy

てテストを実行することができます。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?