Keeping setuptools updated in OpenShift Python S2I
After a recent commit to a Python project that I work on, I noticed that my resulting OpenShift pod had begun crashlooping after the rebuild.
A quick check of the pod logs showed why: for some reason, it could no longer find the alembic
module, despite that being a transitive dependency of SQLAlchemy
, which my project already had in its requirements.txt
.
Curious, I checked the build logs and noticed an odd error during the dependency install:
egg_info for package alembic produced metadata for project name unknown.
Fix your #egg=alembic fragments.
A quick search revealed this to be a common issue experienced in a variety of modules, and the problem in all cases was universally that the version of setuptools being used was too old.
Fortunately, OpenShift has a quick and easy way to resolve this problem - you can instruct the S2I builder to update its own pip and setuptools modules before commencing the build of your application.
This is as easy as setting the UPGRADE_PIP_TO_LATEST
environment variable to true
in your OpenShift buildconfig.
oc set env bc/$BUILD_CONFIG_NAME UPGRADE_PIP_TO_LATEST=true
With this environment set and a new build triggered, I was once again greeted by my application running once more. Hope you find this tip useful!