heroku / buildpacks-python

Heroku's Cloud Native Buildpack for Python applications.
BSD 3-Clause "New" or "Revised" License
27 stars 3 forks source link

Always add the pip dependencies layer `bin` directory to `PATH` #232

Closed edmorley closed 2 months ago

edmorley commented 2 months ago

Previously the bin directory would only be added to PATH if it existed (due to it being set by lifecycle), which is only the case if one of the installed dependencies has an entry point script, which causes pip to create the bin directory and place a wrapper script inside it for that package's CLI command.

This meant:

  1. We had to suppress pip's warning during install (since pip isn't to know that the PATH will be correctly set later)
  2. If an app has no dependencies with an entry-point (so the app image doesn't have a bin directory), then at run-time tries to pip install a new package that does have an entry point (eg when debugging), then that new script won't be on PATH.

As such, we now add the bin directory to PATH explicitly, instead of relying on lifecycle automatic addition.

GUS-W-16359285.