LATEST VERSION: 1.10 - CHANGELOG
Pivotal Cloud Foundry v1.10

Python Buildpack

Page last updated:

Push an App

This buildpack will be automatically used if there is a requirements.txt or setup.py file in the root directory of your project.

If your Cloud Foundry deployment does not have the Python Buildpack installed, or the installed version is out of date, you can use the latest version by specifying it with the -b option when you push your app. For example:

$ cf push my_app -b https://github.com/cloudfoundry/buildpack-python.git

Supported Versions

You can find the list of supported Python versions in the Python buildpack release notes.

Specify a Python Version

You can specific versions of the Python runtime within a runtime.txt file. For example:

$ cat runtime.txt
python-3.5.2

The buildpack only supports the stable Python versions, which are listed in the manifest.yml and Python buildpack release notes.

If you try to use a binary that is not currently supported, staging your app fails and you will see the following error message:

Could not get translated url, exited with: DEPENDENCY_MISSING_IN_MANIFEST: ...
 !
 !     exit
 !
Staging failed: Buildpack compilation step failed

Specify a Start Command

The Python buildpack does not generate a default start command for your applications.

To stage with the Python buildpack and start an application, do one of the following:

  • Supply a Procfile. For more information about Procfiles, see the Configuring a Production Server topic. The following example Procfile specifies gunicorn as the start command for a web app running on Gunicorn:

    web: gunicorn SERVER-NAME:APP-NAME
    
  • Specify a start command with -c. The following example specifies waitress-serve as the start command for a web app running on Waitress:

    $ cf push python-app -c "waitress-serve --port=$PORT DJANGO-WEB-APP.wsgi:MY-APP"
    
  • Specify a start command in the application manifest by setting the command attribute. For more information, see the Deploying with Application Manifests topic.

Vendor App Dependencies

If you are deploying in an environment that is disconnected from the Internet, your application must vendor its dependencies.

For the Python buildpack, use pip:

$ cd YOUR-APP-DIR
$ mkdir -p vendor

# vendors all the pip *.tar.gz into vendor/
$ pip install --download vendor -r requirements.txt

cf push uploads your vendored dependencies. The buildpack installs them directly from the vendor/ directory.

Parse Environment Variables

The cfenv package provides access to Cloud Foundry application environment settings by parsing all the relevant environment variables. The settings are returned as a class instance. See https://github.com/jmcarp/py-cfenv for more information.

Miniconda Support (starting in buildpack version 1.5.6)

To use miniconda instead of pip for installing dependencies, place an environment.yml file in the root directory.

For examples, see our sample apps using Python 2 with miniconda and using Python 3 with miniconda.

Proxy Support

If you need to use a proxy to download dependencies during staging, you can set the http_proxy and https_proxy environment variables. For more information, see the Proxy Usage Documentation.

BOSH Configured Custom Trusted Certificate Support

Versions of Python 2.7.9 and later use certificates stored in /etc/ssl/certs and support BOSH configured custom trusted certificates out of the box.

Help and Support

Join the #buildpacks channel in our Slack community if you need any further assistance.

For more information about using and extending the Python buildpack in Cloud Foundry, see the python-buildpack GitHub repository.

You can find current information about this buildpack on the Python buildpack release page in GitHub.

Create a pull request or raise an issue on the source for this page in GitHub