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...
のように
(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のみの開発環境について記載していますので、関係する依存関係のものを開発する場合は適宜手法を適用してください。
参考にした情報
- Installing Kivy — Kivy 2.0.0 documentation
- Using Visual C Build Tools instead of Visual Studio on Windows · kivy/kivy Wiki
- Installation on Windows(翻訳済み) — Kivy 1.10.0 ドキュメント
##前提環境
- Windows10 Microsoft Windows [Version 10.0.19044.1415]
- python-3.10.1-amd64.exe Python 3.10.1
- vs_BuildTools.exe Visual Studio 2022 Build Tools
、 https://visualstudio.microsoft.com/ja/downloads/ "C++ によるデスクトップ開発" ワークロードを選択してインストールしておきます。https://docs.microsoft.com/ja-jp/cpp/build/building-on-the-command-line - Git-2.34.1-64-bit.exe Git for windows
#構築手順
##環境確認
gitの版数確認
C:> git --version
git version 2.34.1.windows.1
Visual Studio 2022 Build Toolsの設定
C:> "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat"
vcvarsall.batにオプションをつけないとヘルプを得られます。
Pythonインストーラでデフォルトで入れていない人の確認事項
PythonインストーラではPATH変数はインストーラで設定せずに後から個別に設定したほうが未知の影響から逃れるため良いかもしれないと思われている方は、この節を見ながら環境を確認して個別に開発環境毎のPATH変数を設定してください。
PythonのWindowsでPython を使う資料を熟知している方は軽く読み流して下さい。
C:> python --version
Python
Pythonという文字列が返ってくる。
C:> python
Microsoft Storeが起動する。
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)などに記載されているようです。
(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 clone https://github.com/kivy/kivy
冒頭のエラーは次のファイルに記載の依存関係の版数情報と、コンパイル済の提供状況によって発生しています。
kivy\pyproject.toml
kivy\setup.cfg
@@ -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."
]
@@ -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 pytestとPython nose2でテストを実行する。
pip install nose2
pip install pytest
nose2 -v kivy
てテストを実行することができます。