mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 15:00:19 +00:00
f91f4ee4ce
https://www.python.org/downloads/release/python-386/ https://pythoninsider.blogspot.com/2020/09/python-386-is-now-available.html Closes @W-7791243@.
96 lines
3.4 KiB
Markdown
96 lines
3.4 KiB
Markdown

|
|
|
|
# Heroku Buildpack: Python
|
|
|
|
[](https://travis-ci.com/heroku/heroku-buildpack-python)
|
|
|
|
This is the official [Heroku buildpack](https://devcenter.heroku.com/articles/buildpacks) for Python apps.
|
|
|
|
Recommended web frameworks include **Django** and **Flask**, among others. The recommended webserver is **Gunicorn**. There are no restrictions around what software can be used (as long as it's pip-installable). Web processes must bind to `$PORT`, and only the HTTP protocol is permitted for incoming connections.
|
|
|
|
Python packages with C dependencies that are not [available on the stack image](https://devcenter.heroku.com/articles/stack-packages) are generally not supported, unless `manylinux` wheels are provided by the package maintainers (common). For recommended solutions, check out [this article](https://devcenter.heroku.com/articles/python-c-deps) for more information.
|
|
|
|
See it in Action
|
|
----------------
|
|
```
|
|
$ ls
|
|
my-application requirements.txt runtime.txt
|
|
|
|
$ git push heroku main
|
|
Counting objects: 4, done.
|
|
Delta compression using up to 8 threads.
|
|
Compressing objects: 100% (2/2), done.
|
|
Writing objects: 100% (4/4), 276 bytes | 276.00 KiB/s, done.
|
|
Total 4 (delta 0), reused 0 (delta 0)
|
|
remote: Compressing source files... done.
|
|
remote: Building source:
|
|
remote:
|
|
remote: -----> Python app detected
|
|
remote: -----> Installing python
|
|
remote: -----> Installing pip
|
|
remote: -----> Installing SQLite3
|
|
remote: -----> Installing requirements with pip
|
|
remote: Collecting flask (from -r /tmp/build_c2c067ef79ff14c9bf1aed6796f9ed1f/requirements.txt (line 1))
|
|
remote: Downloading ...
|
|
remote: Installing collected packages: Werkzeug, click, MarkupSafe, Jinja2, itsdangerous, flask
|
|
remote: Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0
|
|
remote:
|
|
remote: -----> Discovering process types
|
|
remote: Procfile declares types -> (none)
|
|
remote:
|
|
```
|
|
|
|
A `requirements.txt` must be present at the root of your application's repository to deploy.
|
|
|
|
To specify your python version, you also need a `runtime.txt` file - unless you are using the default Python runtime version.
|
|
|
|
Current default Python Runtime: Python 3.6.12
|
|
|
|
Alternatively, you can provide a `setup.py` file, or a `Pipfile`.
|
|
Using `pipenv` will generate `runtime.txt` at build time if one of the field `python_version` or `python_full_version` is specified in the `requires` section of your `Pipfile`.
|
|
|
|
Specify a Buildpack Version
|
|
---------------------------
|
|
|
|
You can specify the latest production release of this buildpack for upcoming builds of an existing application:
|
|
|
|
$ heroku buildpacks:set heroku/python
|
|
|
|
|
|
Specify a Python Runtime
|
|
------------------------
|
|
|
|
Supported runtime options include:
|
|
|
|
- `python-3.8.6`
|
|
- `python-3.7.9`
|
|
- `python-3.6.12`
|
|
- `python-2.7.18`
|
|
|
|
## Tests
|
|
|
|
The buildpack tests use [Docker](https://www.docker.com/) to simulate
|
|
Heroku's [stack images.](https://devcenter.heroku.com/articles/stack)
|
|
|
|
To run the test suite against the default stack:
|
|
|
|
```
|
|
make test
|
|
```
|
|
|
|
Or to test against a particular stack:
|
|
|
|
```
|
|
make test STACK=heroku-16
|
|
```
|
|
|
|
To run only a subset of the tests:
|
|
|
|
```
|
|
make test TEST_CMD=tests/versions
|
|
```
|
|
|
|
The tests are run via the vendored
|
|
[shunit2](https://github.com/kward/shunit2)
|
|
test framework.
|