Hi, I deployed an app built on Python 3.11.4 but it’s failing. Looking at the deploy output, I see a reference to 3.10:
Selected CPython version (using ): 3.10.12
I also see this in the monitor that is specific to code introduced in python 3.11:
ImportError: cannot import name 'StrEnum' from 'enum' (/layers/paketo-buildpacks_cpython/cpython/lib/python3.10/enum.py)
Can it please be confirmed that Python 3.11.x is supported in Fly.io v2 apps? Thanks.
kaz
August 7, 2023, 11:21pm
2
Yes. Python 3.11.x is supported. Fly.io runs Linux VMs. So we don’t have the notion of “supported language runtime versions” generally speaking.
Seems your error is mentioning Buildpacks. Can you show us your fly.toml?
Thank you for your reply and confirming. Below is the fly.toml generated when fly launch
is run:
# fly.toml app configuration file generated for my-app on 2023-08-06T22:55:19-07:00
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
app = "my-app"
primary_region = "lax"
[build]
builder = "paketobuildpacks/builder:base"
[env]
PORT = "8080"
[http_service]
internal_port = 8080
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ["app"]
Also, I updated the fly.toml
file with the entries below but Fly.io still uses Python 3.10
[build]
builder = "paketobuildpacks/builder:base"
buildpacks = ["gcr.io/paketo-buildpacks/python"]
builtin = "python"
[build.settings]
pythonbase = "3.11-slim-buster"
fly deploy
output:
Status: Image is up to date for gcr.io/paketo-buildpacks/python:latest
...
Selected CPython version (using ): 3.10.12
How do I get Python 3.11.x?
dyc3
August 8, 2023, 12:10pm
5
According to these docs , try setting the BP_CPYTHON_VERSION
environment variable.
Alternatively, you could switch to just using docker using the official python 3.11 image as a base.
dyc3:
BP_CPYTHON_VERSION
Thanks, I added this to the [env]
section of my fly.toml but fly deploy
still selects Python 3.10.12
Can Fly.io please upgrade their Python Buildpack?
roadmr
August 14, 2023, 2:03pm
7
Hi @hbcondo ,
dyc3 had the right answer. You need to set BP_CPYTHON_VERSION to the version of Python you want. The buildpack itself is updated from Github every time you build, so there’s nothing to upgrade on Fly.io ’s side.
Try setting this in your fly.toml:
[build.args]
BP_CPYTHON_VERSION = "3.11.4"
With this, my fly deploy
output includes:
Selected CPython version (using BP_CPYTHON_VERSION): 3.11.4
Note it has to be set as a build-time environment variable , not a run-time one, so it goes in [build.args]
and not in [env]
.
1 Like
@roadmr , thank you for writing out a complete solution…it worked. I am not the only one with this question , it would be nice if the usage of BP_CPYTHON_VERSION
was documented somewhere on Fly.io developer documentation · Fly Docs
1 Like