Kivy: python 3.8, 3.9 support

Created on 1 Apr 2020  Β·  25Comments  Β·  Source: kivy/kivy

Is your feature request related to a problem? Please describe.
Kivy is so marvelous for me! But I'm just frustrated that there isn't a wheel for python 3.8 and 3.9

Describe the solution you'd like
Make python3.8 and 3.9 wheels avilable for pip.

Describe alternatives you've considered
none

Additional context
none

Most helpful comment

Unfortunately, we don't have wheels for python 3.8 for our stable release. We tried but we don't have things setup anymore to generate them.

However, if you're willing to use master, there are perfectly good wheels available for 3.8, and in fact the install has been significantly simplified. The key thing is in step 2 use pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/ to get kivy from our server because it's not available on pypi.

To add them to pypi we'll need to make a new release, but that's not in the cards right now it seems.

All 25 comments

Out of curiosity, does installing from source code work with python 3.8?

Uh, I haven't tried. πŸ˜„

Unfortunately, we don't have wheels for python 3.8 for our stable release. We tried but we don't have things setup anymore to generate them.

However, if you're willing to use master, there are perfectly good wheels available for 3.8, and in fact the install has been significantly simplified. The key thing is in step 2 use pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/ to get kivy from our server because it's not available on pypi.

To add them to pypi we'll need to make a new release, but that's not in the cards right now it seems.

@matham what's holding back making a new release?

Developer time and effort that is lacking at the moment.

so how to fix it

if someone still cannot install Kivy for python 3.8 in windows operating system, I suggesting download from https://www.lfd.uci.edu/~gohlke/pythonlibs/ and find Kivy. Kivy‑1.11.1‑cp38‑cp38‑win_amd64.whl .. means for python 3.8, windows OS x64.

and install that by pip install Kivy‑1.11.1‑cp38‑cp38‑win_amd64.whl (example)

pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/

solve my issue, thanks

It's October now. Has there been any changes in terms of Kivy's wheel installation for Python 3.8 ?
I'm on Ubuntu 20.04 and the above mentioned solutions didn't work for me. Maybe because it's W10-specific.

At the moment pip3 install kivy on my machine errors out with:

```
ERROR: Dependency for context.pyx not resolved: config.pxi
ERROR: Dependency for compiler.pyx not resolved: config.pxi
ERROR: Dependency for context_instructions.pyx not resolved: config.pxi
ERROR: Dependency for fbo.pyx not resolved: config.pxi
ERROR: Dependency for gl_instructions.pyx not resolved: config.pxi
ERROR: Dependency for instructions.pyx not resolved: config.pxi
ERROR: Dependency for opengl.pyx not resolved: config.pxi
ERROR: Dependency for opengl_utils.pyx not resolved: config.pxi
ERROR: Dependency for shader.pyx not resolved: config.pxi
ERROR: Dependency for stencil_instructions.pyx not resolved: config.pxi
ERROR: Dependency for scissor_instructions.pyx not resolved: config.pxi
ERROR: Dependency for texture.pyx not resolved: config.pxi
ERROR: Dependency for vbo.pyx not resolved: config.pxi
ERROR: Dependency for vertex.pyx not resolved: config.pxi
ERROR: Dependency for vertex_instructions.pyx not resolved: config.pxi
ERROR: Dependency for cgl.pyx not resolved: config.pxi
ERROR: Dependency for cgl_mock.pyx not resolved: config.pxi
ERROR: Dependency for cgl_gl.pyx not resolved: config.pxi
ERROR: Dependency for cgl_glew.pyx not resolved: config.pxi
ERROR: Dependency for cgl_sdl2.pyx not resolved: config.pxi
ERROR: Dependency for svg.pyx not resolved: config.pxi
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

```
For the time being I downgraded to Python 3.6. I don't think I'll see that much of a difference.

As a potential newcomer to Kivy, I'm really put off by this lack of support. Is this how you want to greet new users? The obvious first step is pip install kivy and then we just have to look around why it doesn't work.

We support all major operating systems
https://kivy.org/doc/stable/philosophy.html

But not their current versions (like Ubuntu LTS), as it turns out.

No need for the negativity, we are all working pro-bono here, on our personal time. Help is always welcome, there is plenty to do.

Kivy absolutely works on Ubuntu 20.04, the docs can be updated to reflect that.

gabriel@gryphon:~> docker run -it ubuntu:20.04 bash
root@6599fa0c0d81:/# apt update
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
[…]
Reading state information... Done
30 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@6599fa0c0d81:/# apt install python3.8 python3-pip -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
[…]
done.
root@6599fa0c0d81:/# python3.8 -m pip install --pre kivy[full]
Collecting kivy[all]
  Downloading Kivy-2.0.0rc3-cp38-cp38-manylinux2010_x86_64.whl (22.0 MB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 22.0 MB 13 kB/s 
  WARNING: kivy 2.0.0rc3 does not provide the extra 'all'
Collecting pygments
  Downloading Pygments-2.7.1-py3-none-any.whl (944 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 944 kB 5.6 MB/s 
Collecting docutils
  Downloading docutils-0.16-py2.py3-none-any.whl (548 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 548 kB 5.1 MB/s 
Collecting Kivy-Garden>=0.1.4
  Downloading kivy-garden-0.1.4.tar.gz (6.8 kB)
Collecting requests
  Downloading requests-2.24.0-py2.py3-none-any.whl (61 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 61 kB 459 kB/s 
Collecting chardet<4,>=3.0.2
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 133 kB 9.6 MB/s 
Collecting certifi>=2017.4.17
  Downloading certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 156 kB 13.4 MB/s 
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 127 kB 5.0 MB/s 
Collecting idna<3,>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 58 kB 5.6 MB/s 
Building wheels for collected packages: Kivy-Garden
  Building wheel for Kivy-Garden (setup.py) ... done
  Created wheel for Kivy-Garden: filename=Kivy_Garden-0.1.4-py3-none-any.whl size=4531 sha256=40c7f88731f91c2bb078133980911f6b7a9415ac1398a2eb65a16ed605b468c7
  Stored in directory: /root/.cache/pip/wheels/d2/72/1a/9ddd17f00755707937caa350616965fb3330a6270425f397e6
Successfully built Kivy-Garden
Installing collected packages: pygments, docutils, chardet, certifi, urllib3, idna, requests, Kivy-Garden, kivy
Successfully installed Kivy-Garden-0.1.4 certifi-2020.6.20 chardet-3.0.4 docutils-0.16 idna-2.10 kivy-2.0.0rc3 pygments-2.7.1 requests-2.24.0 urllib3-1.25.10
root@6599fa0c0d81:/# python3.8
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import kivy
[WARNING] [Config      ] Older configuration version detected (0 instead of 21)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in /root/.kivy/logs/kivy_20-10-08_0.txt
[INFO   ] [Kivy        ] v2.0.0rc3, git-20c14b2, 20200615
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.8/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3.8"
>>> 

Thank you and I'm sorry. Kivy looked really promising, but when I got to installation it turned out to be a chore. I'll give it a chance anyway and if I like it, I'll certainly consider joining the project.

Hi, I can see you're able to install Kivy into container with Python 3.8 installed.
The difference I've spotted is that you used the --pre flag. That did the trick for me. I couldn't install it without the flag.

The help page says this about the flag:

--pre Include pre-release and development versions. By default, pip only finds stable versions.

The comment above from April already indicated how to use the pre flag. And those instructions would have worked even before we uploaded the pre version to pypi a few months ago because it shows how to download from our server using pip.

It doesn't change my concern about scaring off potential new users (myself included). And including the --pre flag in the installation section of the documentation, while making things better than they are, will not be a perfect solution, as it still highlights that there is no working stable release for Python 3.8.

My comment was more directed at @codinghedgehog-python because I noticed multiple people commented here and elsewhere that it's not working after having seen this issue, but they somehow seemingly missed my comment from April and I wasn't sure why.

in practice kivy==2.0.0rc3 installs on Python 3.8 , it is a de facto release version because this is what in practice we have to use on Android (which uses Python 3.8) .

What is missing from the Kivy 1.11.1 install documentation is (in big friendly letters) "Python 3.7 ONLY"

The major difficulty with the docs is that we cannot easily update the stable docs (CI won't build it anymore). So unless we change the front page to link to master docs, which we shouldn't do, we have no way to add this info to the (stable) docs new users see.

Perhaps in the future when we make a release and update stable docs, we should indicate on the docs the max python version supported with wheels.

I see, but Kivy is starting to look like abandonware. Today there is somebody trying to install on Python 3.9

Perhaps release 2.0.0 and accept that it will not be perfect, at release.

It is true that kivy has less active core-devs than like 3-4 years ago, but that's the nature of open source where people come and go for whatever reasons and currently we're in a bit of a trough.

And the website specifically, kivy has needed a major website upgrade for like 5 years now, but no one who looked at that so far has followed through. I suppose it's not a minor undertaking.

The plan is to release 2.0.0 as soon as we can get 3.9 wheels to build: https://github.com/kivy/kivy/pull/7132 and someone works through the release notes etc. We typically release once a year, and it has been about a year since the last release. Except python has increased their release cadence to once a year as well so we don't have wheels for 3.8 just as 3.9 has been released.

@janek37 python (and javascript) devs tend to declare libraries abandoned, outdated, ... if they not support latest dependencies right away. Personally i prefer API stability and avoiding regressions over running bleeding edge dependency versions. Kivy is a complex piece of software, and in the discipline of reliability kivy devs do a very good job for a long time now.

Considering the fact that Kivy core devs don't have the funding like Canonical, Facebook or Microsoft they do pretty good job. Plus I gotta say I get very decent support on Discord and Stack Overflow from members of their team.
And if this and that sometimes doesn't work immediately and requires additional tweaking, well it's open source and manpower is expensive. Despite all that Kivy is still considered to be the most mature GUI framework out there so kudos for that.

Perhaps I was not clear, Kivy and its developers are amazing.

But noobs don't understand that, they just experience that install doesn't work. More experienced users look at not supporting a fairly current version of Python as a red flag.

As I understand it Python 3.9 starts to address Python as a moving target, but until that is addressed there is an issue. Perhaps more frequent maintenance releases (ones that don't require documentation changes) would help?

Maintenance releases would now be stalled behind 2.0.0 . This needs to be released, even if it means 2.0.1 supporting Python 3.9 in the near future.

We're continuously improving the installation process by adding wheels for different os, trying to make the kivy deps simpler etc so for the next release it'd just work as a bare install with pip install kivy although the reccomended install will be pip install kivy[base] or pip install kivy[full]. Hence why we need to update the install with new releases. But perhaps it'll stabilize now that we have wheels for all major os and with the above changes.

Regarding making a release now without waiting for 3.9, that's not truly what's blocking right now. A few issues needs to be resolved before we can release and the time it takes to make a release like compiling release notes, testing on all os like conda, apt etc means that when that is ready 3.9 wheels should be ready as well.

pip install kivy[base] kivy_examples --pre --extra-index-url https://kivy.org/downloads/simple/

this solved my problem

Was this page helpful?
0 / 5 - 0 ratings