Python classic buildpack now requires a package manager file when using setup.py
Change effective on 10 December 2025
The Python classic buildpack, used by Cedar-generation apps, now requires that apps using setup.py to declare dependencies have an explicit Python package manager file, such as a requirements.txt, Pipfile.lock, poetry.lock or a uv.lock.
Previously if an app had none of those files but had a setup.py file, the buildpack would implicitly fall back to installing dependencies from setup.py using pip in editable mode. However, you must now add an explicit package manager file to your app, so the buildpack doesn’t have to guess which package manager and mode to use.
To continue using your setup.py file with pip in editable mode, create a new file in the root directory of your app named requirements.txt containing this requirements entry:
--editable .
However, we recommend migrating away from declaring app dependencies in setup.py in favour of using your package manager’s own dependency files, since:
- Declaring dependencies in
setup.pyis intended more for libraries than applications, particularly given it’s much harder to lock transitive dependencies using asetup.pyfile. - The
setup.pyfile is deprecated upstream in favour ofpyproject.toml.