Skip to main content

A plugin for pdm that enables virtualenv management

Project description

pdm-venv

Tests pypi version pre-commit Code style: black

A plugin for pdm that enables virtualenv management

Requirements

pdm-venv requires Python>=3.7

Installation

On PDM 1.6.4+, you can install the plugin directly by:

$ pdm plugin add pdm-venv

If pdm is installed via pipx(the recommended way), run:

$ pipx inject pdm pdm-venv

Otherwise if pdm is installed via Homebrew, run:

$ $(brew --prefix pdm)/libexec/bin/pip install pdm-venv

Or install with pip to the user site:

$ python -m pip install --user pdm-venv

Note that pdm-venv must be installed to the same environment as pdm.

Usage

pdm-venv enhances pdm's CLI with the support of virtualenv creation and management. With pdm-venv installed, the default value of use_venv will turn to True, you can disable the whole plugin by pdm config use_venv false.

Create a virtualenv

# Create a virtualenv based on 3.8 interpreter
$ pdm venv create 3.8
# Assign a different name other than the version string
$ pdm venv create --name for-test 3.8
# Use venv as the backend to create, support 3 backends: virtualenv(default), venv, conda
$ pdm venv create --with venv 3.9

List all virtualenv created with this project

$ pdm venv list
Virtualenvs created with this project:

-  3.8.6: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-3.8.6
-  for-test: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test
-  3.9.1: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-3.9.1

The name before the colon(:) is the key of the virtualenv which is used in remove and activate commands below.

Remove a virtualenv

$ pdm venv remove for-test
Virtualenvs created with this project:
Will remove: C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test, continue? [y/N]:y
Removed C:\Users\Frost Ming\AppData\Local\pdm\pdm\venvs\test-project-8Sgn_62n-for-test

Activate a virtualenv

Instead of spawning a subshell like what pipenv and poetry do, pdm-venv doesn't create the shell for you but print the activate command to the console. In this way you won't lose the fancy shell features. You can then feed the output to eval to activate the virtualenv without leaving the current shell:

Bash/csh/zsh

$ eval $(pdm venv activate for-test)
(test-project-8Sgn_62n-for-test) $  # Virtualenv entered

Fish

$ eval (pdm venv activate for-test)

Powershell

PS1> Invoke-Expression (pdm venv activate for-test)

You can make your own shell shortcut function to avoid the input of long command. Here is an example of Bash:

pdm_venv_activate() {
    eval $('pdm' 'venv' 'activate' "$1")
}

Then you can activate it by pdm_venv_activate $venv_name and deactivate by deactivate directly.

Additionally, if the saved Python interpreter is a venv Python, you can omit the name argument following activate.

Switch Python interpreter

When pdm-venv is enabled, Python interpreters associated with the venvs will also show in the interpreter list of pdm use or pdm init command.

Additionally, if pdm detects it is inside an active virtualenv by examining VIRTUAL_ENV env var, it will reuse that virtualenv for later actions.

Virtualenv auto creation

If no Python interpreter is selected for the project, pdm-venv will take charge to create one for you and select the venv interpreter automatically, just like what pipenv and poetry do.

Configuration

Config Item Description Default Value Available in Project Env var
venv.location The root directory to store virtualenvs appdirs.user_data_dir() / "venvs" No
venv.backend The default backend used to create virtualenvs virtualenv No

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdm-venv-0.3.0.tar.gz (11.9 kB view hashes)

Uploaded Source

Built Distribution

pdm_venv-0.3.0-py3-none-any.whl (11.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page