Skip to main content

Project-level Python virtual environment management tool.

Project description

PyEM manages multiple virtual environments local to projects. It provides shortcuts to create, remove, switch between, and run commands against virtual environments created against various Python interpreters.

In Action

Add a virtual environment:

$ pyem venv add python3.7  # Based on a command.

$ pyem venv add 3.6  # Based on interpreter found by the Python launcher.

$ pyem venv add /usr/local/bin/pypy3  # Based on an executable.

The second variant relies on the Python launcher to locate an interpreter. This tool should be installed by default if you use the officlal installer on Windows (and do not explicitly choose not to install it). For other platforms, Python launcher for UNIX by Brett Cannon can be used as an alternative.

List managed virtual environments:

$ pyem venv list
  Quintuplet
=============================================
  cpython-3.6-darwin-x86_64-f14a3513
  cpython-3.7-darwin-x86_64-dbe83ac5
* pypy-3.6-darwin-x86_64-dc1298a1

Set active virtual environment:

$ pyem venv set 3.7
Switched to cpython-3.7-darwin-x86_64-dbe83ac5

$ pyem venv set 3.6
Error: name '3.6' is ambiguous; choose from:
  cpython-3.6-darwin-x86_64-f14a3513
  pypy-3.6-darwin-x86_64-dc1298a1

$ pyem venv set cpython-3.6
Switched to cpython-3.6-darwin-x86_64-f14a3513

Run a command inside a virtual environment:

$ pyem poetry run python -c "import sys; print(sys.executable)"
/tmp/exampleproject/.venvs/bin/python

$ pyem --spec=pypy-3.6 pipenv run pypy3 -c "import sys; print(sys.executable)"
/tmp/exampleproject/.venvs/bin/pypy3

How does this work?

PyEM sets environment variables VIRTUAL_ENV and PATH, and hand off control to subprocess for the command specified. This is enough to trick a lot of Python project tools, including the Python launcher, Poetry, and Pipenv. Python interpreters with venv support (e.g. CPython 3.3 or later) should also integrate seamlessly.

Flit is more difficult to trick since it does not automatically inspect environment variables like other tools do. Use this workaround instead (requires the Python launcher):

$ pyem flit install --python=py

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

pyem-0.3.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

pyem-0.3.0-py2.py3-none-any.whl (35.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pyem-0.3.0.tar.gz.

File metadata

  • Download URL: pyem-0.3.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for pyem-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9a7c213eb9968c4c49cd9674f44da16fc78aaef378316e4d0bd939298d768bd4
MD5 356e2412175f35253e908907183c07ef
BLAKE2b-256 bf1737de664afe33175e77f9d84f5090cb4954f50846bf5c61653cb8f5c5d921

See more details on using hashes here.

Provenance

File details

Details for the file pyem-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pyem-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 35.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for pyem-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9454710217c81f439163090825205ae7a481c2b3a9c1b28cdbc89f5977fe8a13
MD5 51726543864fe3544af5736a1e2bc126
BLAKE2b-256 daab5d2c9a47c36ebbba6f340ec810802b07d44394eda86b8bb05d602af9807f

See more details on using hashes here.

Provenance

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