universal python virtual environment finder
Project description
libsoulsearching
python virtual environment finder for most mainstream setups, after multiple projects of mine needed to dig through a venv
installation
pip install libsoulsearching
quickstart
from libsoulsearching import find_venv, find_all_venvs, ToolType
# find the first/best venv
info = find_venv("/path/to/project")
if info:
print(f"found {info.tool.value} venv at {info.venv_path}")
# find all venvs
all_venvs = find_all_venvs("/path/to/project")
for venv in all_venvs:
print(f"{venv.tool.value}: {venv.venv_path}")
# find specific tool only
poetry_venv = find_venv("/path/to/project", tool=ToolType.POETRY)
supported tools
-
poetry
poetry.lock,pyproject.tomlwith poetry config -
pipenv
pipfile.lock -
pdm
pdm.lock,.pdm.toml -
uv
uv.lock,.venv -
rye
rye.lock,.python-version -
hatch
pyproject.tomlwith[tool.hatch.envs] -
venv
.venv/pyvenv.cfg -
pyenv
.python-version
cli usage
# find first venv
venvfinder /path/to/project
# list all venvs
venvfinder /path/to/project --all
# find specific tool
venvfinder /path/to/project --tool poetry
# json output
venvfinder /path/to/project --json
api reference
-
libsoulsearching.find_venv()
find a virtual environment in the given project directory -
libsoulsearching.find_all_venvs()
find all virtual environments in the given project directory -
libsoulsearching.ToolType
enumeration of supported python environment management tools -
libsoulsearching.VenvInfo
information about a detected python virtual environment
def libsoulsearching.find_venv()
find a virtual environment in the given project directory
-
signature:
def find_venv( project_root: str | Path, tool: ToolType | None = None, ) -> VenvInfo | None: ...
-
arguments:
project_root: str | Path
path to the project directorytool: ToolType | None
specific tool to detect. if none, uses priority order
-
returns:
VenvInfo | None
venvinfo if a venv is found, none otherwise
def libsoulsearching.find_all_venvs()
find all virtual environments in the given project directory
returns all detected venvs in priority order, including potentially invalid ones (is_valid=false) if the tool's marker files exist but the actual venv is missing
-
signature:
def find_all_venvs(project_root: str | Path) -> list[VenvInfo]: ...
-
arguments:
project_root: str | Path
path to the project directory
-
returns:
list[VenvInfo]
list of venvinfo objects (may be empty)
class libsoulsearching.ToolType
enumeration of supported python environment management tools
- attributes:
POETRY: str
poetry package managerPIPENV: str
pipenv package managerPDM: str
pdm package managerUV: str
uv package managerRYE: str
rye package managerHATCH: str
hatch package managerVENV: str
standard venv modulePYENV: str
pyenv version managerENV_VAR: str
virtual environment from environment variable
class libsoulsearching.VenvInfo
information about a detected python virtual environment
- attributes:
tool: ToolType
the detected tool typevenv_path: Path | None
path to the virtual environment directorypython_executable: Path | None
path to the python executablepython_version: str | None
python version string (e.g., "3.10.5")is_valid: bool
whether the detected environment exists and is valid
licence
libsoulsearching is unencumbered, free-as-in-freedom, and is dual-licenced under
The Unlicense or the BSD Zero Clause License. (SPDX: Unlicense OR 0BSD)
you are free to use the software as you wish, without any restrictions or obligations, subject only to the warranty disclaimers in the licence text of your choosing.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file libsoulsearching-0.1.1.tar.gz.
File metadata
- Download URL: libsoulsearching-0.1.1.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfd3db3bdffa99cfb9d550214ae2a4031422f6299740bb394d57f71ce7c1d7ce
|
|
| MD5 |
0d74161cb9c6f9458e1bdc13e52f6ad3
|
|
| BLAKE2b-256 |
3c055fab6481245d979bacd2bcf6faf381f807c9888241e1aa7094f3e5901962
|
File details
Details for the file libsoulsearching-0.1.1-py3-none-any.whl.
File metadata
- Download URL: libsoulsearching-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9198fd6c574329f4478a9aa00120ce5b0bc432aaaf76f1b6cc99f9efb8c67f8a
|
|
| MD5 |
995971917c414872990b3f0131c82c05
|
|
| BLAKE2b-256 |
49dbac22baee35fafcaa0198a11230a5d69cad831015032a8ada6fede4659f15
|