Skip to main content

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.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

  • 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 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

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


Download files

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

Source Distribution

libsoulsearching-0.1.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

libsoulsearching-0.1.1-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

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

Hashes for libsoulsearching-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cfd3db3bdffa99cfb9d550214ae2a4031422f6299740bb394d57f71ce7c1d7ce
MD5 0d74161cb9c6f9458e1bdc13e52f6ad3
BLAKE2b-256 3c055fab6481245d979bacd2bcf6faf381f807c9888241e1aa7094f3e5901962

See more details on using hashes here.

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

Hashes for libsoulsearching-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9198fd6c574329f4478a9aa00120ce5b0bc432aaaf76f1b6cc99f9efb8c67f8a
MD5 995971917c414872990b3f0131c82c05
BLAKE2b-256 49dbac22baee35fafcaa0198a11230a5d69cad831015032a8ada6fede4659f15

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