Skip to main content

universal python virtual environment finder

Project description

libsoulsearching

universal python virtual environment finder

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.toml with poetry config
  • pipenv - pipfile.lock
  • pdm - pdm.lock, .pdm.toml
  • uv - uv.lock, .venv
  • rye - rye.lock, .python-version
  • hatch - pyproject.toml with [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

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 directory
    • tool: 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 manager
    • PIPENV: str pipenv package manager
    • PDM: str pdm package manager
    • UV: str uv package manager
    • RYE: str rye package manager
    • HATCH: str hatch package manager
    • VENV: str standard venv module
    • PYENV: str pyenv version manager
    • ENV_VAR: str virtual environment from environment variable

class libsoulsearching.VenvInfo

information about a detected python virtual environment

  • attributes:
    • tool: ToolType the detected tool type
    • venv_path: Path | None path to the virtual environment directory
    • python_executable: Path | None path to the python executable
    • python_version: str | None python version string (e.g., "3.10.5")
    • is_valid: bool whether the detected environment exists and is valid

licence

mit

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libsoulsearching-0.1.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file libsoulsearching-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: libsoulsearching-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.1 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

Hashes for libsoulsearching-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5c4c19ba1c86ff9eca074354de0ccf83c8246803aec4596ec8c9e7c25a568ef8
MD5 11db4de4ea22744c39f2a9eb0fae8616
BLAKE2b-256 1168a906f0912d2c40097003f940e070a1a0532ede4269bf50344e7b75f1e5ee

See more details on using hashes here.

Supported by

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