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

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: