Skip to content

Commit

Permalink
Address Issue pypa#5129 Document how to rename (move) project directory
Browse files Browse the repository at this point in the history
- Added documentation in installation.md under 'Virtualenv' mapping caveat
- Added documentation to the virtualenv.md
  • Loading branch information
langaaegeskov committed Aug 6, 2023
1 parent 9202cf1 commit 8ae14a6
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,5 +161,6 @@ that ensures all commands have access to your installed packages with `$ pipenv
- Pipenv automatically maps projects to their specific virtualenvs.
- By default, the virtualenv is stored globally with the name of the project’s root directory plus the hash of the full path to the project's root (e.g., `my_project-a3de50`).
- Should you change your project's path, you break such a default mapping and pipenv will no longer be able to find and to use the project's virtualenv.
- If you must move or rename a directory managed by pipenv, run 'pipenv --rm' before renaming or moving your project directory. Then, after renaming or moving the directory run 'pipenv install' to recreate the virtualenv.
- Customize this behavior with `PIPENV_CUSTOM_VENV_NAME` environment variable.
- You might also prefer to set `PIPENV_VENV_IN_PROJECT=1` in your .env or .bashrc/.zshrc (or other shell configuration file) for creating the virtualenv inside your project's directory.
7 changes: 7 additions & 0 deletions docs/virtualenv.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,10 @@ is unique.
Pipenv supports a arbitrary custom name for the virtual environment set at `PIPENV_CUSTOM_VENV_NAME`.

The logical place to specify this would be in a user's `.env` file in the root of the project, which gets loaded by pipenv when it is invoked.

## Renaming or Moving a project folder managed by pipenv
By default pipenv creates a virtualenv for your project and gives it a name. The default name is how pipenv maps the individual project to the correct virtualenv. Pipenv names the virtualenv with the name of the project’s root directory plus the hash of the full path to the project's root (e.g., `my_project-a3de50`).

If you rename or move the project folder this will change the project path. Then, pipenv will no longer be able to find your virtualenv and it will make a new virtualenv. This leaves you with the old virtualenv still lying around on you system. Luckily the fix is simple.
- Run 'pipenv --rm' *before* renaming or moving your project directory
- Then, after renaming or moving the directory run 'pipenv install' to recreate the virtualenv

0 comments on commit 8ae14a6

Please sign in to comment.