One command to explain your Python environment: interpreter, venv, packages, sys.path, and more.
Project description
pywho
One command to explain your Python environment.
Ever asked "Which Python am I running? Why is it using that venv? Where are my packages?" — pywho answers all of it instantly.
$ pywho
pywho - Python Environment Inspector
==============================================
Interpreter
Executable: /Users/dev/.venv/bin/python3
Version: 3.12.3 (CPython)
Compiler: Clang 15.0.0 (clang-1500.3.9.4)
Architecture: 64-bit
Platform
System: Darwin 24.1.0
Machine: arm64
Virtual Environment
Active: Yes
Type: uv
Path: /Users/dev/myproject/.venv
Prompt: myproject
Paths
Prefix: /Users/dev/myproject/.venv
Base Prefix: /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12
Site-packages: /Users/dev/myproject/.venv/lib/python3.12/site-packages
Package Manager
Detected: uv
pip version: 24.0
sys.path
[0] (empty string = cwd)
[1] /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python312.zip
[2] /opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python3.12
...
Why pywho?
- "Works on my machine" is the #1 debugging friction in Python. pywho kills it with one command.
- Paste the output into a GitHub issue, Slack message, or Stack Overflow question. Done.
- Zero dependencies. Pure stdlib. Works everywhere Python runs.
- Cross-platform. Linux, macOS, Windows. Python 3.9+.
Installation
pip install pywho
Or with uv:
uv pip install pywho
Or run without installing:
uvx pywho
Usage
Basic inspection
pywho
JSON output (for CI, scripts, sharing)
pywho --json
{
"interpreter": {
"executable": "/usr/bin/python3",
"version": "3.11.6",
"implementation": "CPython",
...
},
"venv": {
"is_active": false,
"type": "none",
...
},
...
}
Include installed packages
pywho --packages
Skip pip version check (faster)
pywho --no-pip
Run as module
python -m pywho
As a Python library
from pywho import inspect_environment
report = inspect_environment()
print(report.executable) # /usr/bin/python3
print(report.venv.is_active) # True
print(report.venv.type) # "uv"
print(report.package_manager) # "uv"
# Get JSON-serializable dict
data = report.to_dict()
What it detects
Interpreters
- CPython, PyPy, and other implementations
- Version, compiler, architecture (32/64-bit)
- Build date
Virtual environments
| Type | Detection method |
|---|---|
| venv | sys.prefix != sys.base_prefix |
| virtualenv | orig-prefix.txt in lib directory |
| uv | uv = in pyvenv.cfg |
| conda | CONDA_DEFAULT_ENV env var |
| poetry | POETRY_ACTIVE env var |
| pipenv | PIPENV_ACTIVE env var |
Package managers
Detects: pip, uv, conda, poetry, pipenv, pyenv
Paths
sys.prefix,sys.base_prefix,sys.exec_prefix- All
site-packagesdirectories - Full
sys.pathwith index numbers
Packages
With --packages: lists all installed packages with versions and locations.
Use cases
- Debugging: Paste
pywho --jsonoutput into bug reports - Onboarding: New team member runs
pywhoto verify their setup - CI/CD: Add
pywho --jsonto your pipeline for environment snapshots - Support: Ask users to run
pywhoinstead of 5 separate commands
Platforms
| Platform | Status |
|---|---|
| Linux | Supported |
| macOS | Supported |
| Windows | Supported |
| Python | Status |
|---|---|
| 3.9 | Supported |
| 3.10 | Supported |
| 3.11 | Supported |
| 3.12 | Supported |
| 3.13 | Supported |
| 3.14 | Supported |
Development
git clone https://github.com/AhsanSheraz/pywho.git
cd pywho
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest -v
mypy src/pywho
License
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 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 pywho-0.1.0.tar.gz.
File metadata
- Download URL: pywho-0.1.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":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 |
1e08e946561cb9810d00f7716935b2d646d20703f693ee829c79e91dd39e32e4
|
|
| MD5 |
e2947d174c7573ce9c96b63f9d105cc3
|
|
| BLAKE2b-256 |
3b0d9adcf2e3dfe5738c9b3d26731b7ae94cbf3770c2dfe6fa78ca9544c45ff0
|
File details
Details for the file pywho-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pywho-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":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 |
f4afe35265f40817bed530c2d174881e669f7b81d94e6a1d323f52880394e4d8
|
|
| MD5 |
19872ec4e2e03616771dfab1969e10ee
|
|
| BLAKE2b-256 |
e04dcd3230ccf858c50f4701bdec775db4cfc7ba3b6b3fb5ada771362e621866
|