Add PIPENV_PROJECT_DIR environment variable#6497
Merged
Conversation
Adds a new PIPENV_PROJECT_DIR environment variable that is automatically set when running 'pipenv run' or 'pipenv shell'. This variable contains the path to the project root directory (where the Pipfile is located). This allows scripts defined in the [scripts] section of Pipfile to reference project-relative paths regardless of the current working directory: [scripts] test = "pytest $PIPENV_PROJECT_DIR/tests" mypy = "mypy --config-file=$PIPENV_PROJECT_DIR/mypy.ini src" This is particularly useful when: - Running pipenv commands from subdirectories - Scripts need to reference config files in the project root - You have a src layout and need consistent paths Also documents the runtime environment variables (PIPENV_ACTIVE, PIPENV_PROJECT_DIR, VIRTUAL_ENV) in the configuration docs. Fixes #2241
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new
PIPENV_PROJECT_DIRenvironment variable that is automatically set when runningpipenv runorpipenv shell. This variable contains the path to the project root directory (where the Pipfile is located).Motivation
This addresses a long-standing feature request (#2241) from 2018. Users needed a way to consistently run scripts that require project root relative paths, regardless of their current working directory.
Use Cases
Running scripts from subdirectories:
Scripts in [scripts] section:
Django projects with src layout:
Changes
pipenv/routines/shell.py:
PIPENV_PROJECT_DIRin bothdo_shell()anddo_run()docs/configuration.md:
PIPENV_ACTIVE,PIPENV_PROJECT_DIR, andVIRTUAL_ENVTesting
Related Environment Variables
PIPENV_ACTIVE1when inside a Pipenv environmentPIPENV_PROJECT_DIRPIPENV_PIPFILEVIRTUAL_ENVFixes #2241
Pull Request opened by Augment Code with guidance from the PR author