You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using Python virtual environments, it's common to store the virtual environment (aka venv / virtualenv) inside the project directory, inside a directory named .venv/ or venv/. (At least when creating them manually, or using 'uv' which prefers storing them inside the project. Poetry/Pipenv prefer a global venv location outside of the project.)
This directory should always be added to the .gitignore, but sometimes users forget, meaning it is committed to the Git repo, and will be included in the app source when using a Git based deployment mechanism (such as git push heroku main).
(Even if they have added the .venv to their .dockerignore that won't help, since Pack CLI doesn't use that file - at least not yet; perhaps we should suggest this upstream?)
We should warn or even error if a .venv/ or venv/ directory is present during the build, since:
virtual environments are always machine-specific (os/arch specific, plus typically path specific and not relocatable) so a local venv won't work in the app image anyway
the buildpack installs deps into its own venv in a layer, so even if the local venv did work, it would be redundant anyway
including a local venv bloats the final app image size (and git repo, if committed)
having two venvs in the image will cause confusion when users are debugging, since they might think the one inside the app source directory is what is being used (when it won't be)
When using Python virtual environments, it's common to store the virtual environment (aka venv / virtualenv) inside the project directory, inside a directory named
.venv/
orvenv/
. (At least when creating them manually, or using 'uv' which prefers storing them inside the project. Poetry/Pipenv prefer a global venv location outside of the project.)This directory should always be added to the
.gitignore
, but sometimes users forget, meaning it is committed to the Git repo, and will be included in the app source when using a Git based deployment mechanism (such asgit push heroku main
).In addition, even if users add the
.venv/
to their.gitignore
, it will still be included in the app source when building locally usingpack build
, unless they know to also exclude the directory via theproject.toml
exclude
field:https://github.com/buildpacks/spec/blob/main/extensions/project-descriptor.md#iobuildpacksinclude-optional-and-iobuildpacksexclude-optional
(Even if they have added the
.venv
to their.dockerignore
that won't help, since Pack CLI doesn't use that file - at least not yet; perhaps we should suggest this upstream?)We should warn or even error if a
.venv/
orvenv/
directory is present during the build, since:GUS-W-12421020.
The text was updated successfully, but these errors were encountered: