Specifying a Python Version for Cloud Foundry

When you use Cloud Foundry to build Python based solutions like Django, you end up running into the issue of Python versions. By default Cloud Foundry, defaults the Python version to 2.7.11. Between version 2.7.11 and the latest 3.5.x, Python has made a lot of changes and even simple string processing functions could potentially error out.

Create a runtime.txt

The best way to solve for this is to create a runtime.txt in the root folder of your application. This is the same location where you have the manifest.yml file. In the runtime.txt file, specify the following line:

python-3.4.4

Modify your manifest.yml

The Python buildpack available on GitHub already has this information but just in case you removed it (like I did), please add this back.

url_to_dependency_map:
  - match: python-(d+.d+.d+)
    name: python
    version: 3.5.2
  - match: libmemcache
    name: libmemcache
    version: 1.0.18
  - match: libffi
    name: libffi
    version: "3.1"
dependencies:
  - name: libmemcache
    version: 1.0.18
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/python/binaries/cflinuxfs2/libmemcache.tar.gz
    md5: 6b40600ab7c5bd52b5c6eedd18efb651
  - name: libffi
    version: "3.1"
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/python/binaries/cflinuxfs2/libffi.tar.gz
    md5: 83028a299b8ac323bda8a56c5c70d4cd
  - name: python
    version: 2.7.11
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-2.7.11-linux-x64.tgz
    md5: 6a93c298ce97d4eb6b3ec7039f9ae439
  - name: python
    version: 2.7.12
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-2.7.12-linux-x64.tgz
    md5: 5b49c4c1ba9ceae55f5d4bd0b95863f4
  - name: python
    version: 3.3.5
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.3.5-linux-x64.tgz
    md5: f32e11f2d039dae0d6574403a80b485d
  - name: python
    version: 3.3.6
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.3.6-linux-x64.tgz
    md5: 08dee09d32477c7f0497e736c0c7967b
  - name: python
    version: 3.4.4
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.4.4-linux-x64.tgz
    md5: eeeaf592c843fbc05528d782f20486fc
  - name: python
    version: 3.4.5
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.4.5-linux-x64.tgz
    md5: 119671dbbb94170e69da5f3247f6ee6e
  - name: python
    version: 3.5.1
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.5.1-linux-x64.tgz
    md5: a292283d7eec49d7ea5c60036f633740
  - name: python
    version: 3.5.2
    cf_stacks:
      - cflinuxfs2
    uri: https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/python/python-3.5.2-linux-x64.tgz
    md5: 701a135b3228075c2ce59c527bc92e1e

Lastly

Remember that although you’ve specified the Python version, it doesn’t mean that Cloud Foundry (or) an adoption of Cloud Foundry support that version. For example, Predix supports up to 3.4.4 and IBM BlueMix upto 3.5.1. Always refer to the provider’s documentation. If the documentation is not available, you may have to increment the version from 2.7.11 (bit-by-bit) until the system begins to error out.

Have fun!

Leave a Reply

%d bloggers like this: