Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python Version via .python-version #932

Open
jamesward opened this issue Mar 24, 2020 · 6 comments
Open

Python Version via .python-version #932

jamesward opened this issue Mar 24, 2020 · 6 comments

Comments

@jamesward
Copy link

It doesn't seem like there is a standard way for a project to specify it's Python version, but I'm using https://github.com/pyenv/pyenv and it does this via a .python-version file. Is adding support for reading the version from that file something that would be considered?

@CaseyFaist
Copy link
Contributor

Absolutely! I can't promise when work will start on this feature specifically, but support for Poetry and using up to date python conventions is very much on my mind.

@joshfriend
Copy link
Contributor

joshfriend commented Apr 9, 2020

@jamesward have you discovered Heroku's runtime.txt file yet?

There are community buildpacks for pyenv, but pyenv compiles python from source (lengthening your slug build time) whereas this buildpack has prebuilt python binaries for common versions.

The names for various python versions differ between runtime.txt (e.g. python-3.8.0) and .python-version (just 3.8.0) because runtime.txt is used for other language buildpacks, so they are not directly equivalent or interchangeable.

@jamesward
Copy link
Author

I have seen that but it'd be nice to be able to specify the python version in just one place. :)

@abitrolly
Copy link

pyproject.toml can also be used to avoid yet another file.

There is a requires-python directive, but it is designed to describe all Python versions a package is compatible with. For the buildpack, however, it may beneficial to set specific version in [tool.buildpack]

[tool.buildpack]
python = "3.8.x"

@edmorley
Copy link
Member

edmorley commented Apr 8, 2021

I'd love to be able to add support for this in a vendor-independent manner.

Perhaps we can use requires-python and either:
(a) insist it specifies a single version (or at least using only a fairly easy to manually parse version specifier),
(b) resolve the version range ourselves (similar to what the Node buildpack does) to support all PEP440 specifiers, though we'll then have a pre-python-install-time dependency on packaging

@edmorley
Copy link
Member

edmorley commented Feb 7, 2022

I've written up my latest thoughts on ways to specify Python version for Heroku apps, here:
#913 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants