# Pipenv — Python Development Workflow for Humans > Pipenv combines pip and virtualenv into a single tool that manages dependencies with a lockfile, deterministic builds, and automatic virtual environment creation. ## Install Save in your project root: # Pipenv — Python Development Workflow for Humans ## Quick Use ```bash pip install pipenv pipenv install requests pipenv run python app.py pipenv shell # activate the virtualenv ``` ## Introduction Pipenv is the officially recommended Python packaging tool that brings together pip for installation and virtualenv for isolation into a single workflow. It uses a Pipfile and Pipfile.lock to ensure reproducible builds and automatic virtual environment management. ## What Pipenv Does - Creates and manages a virtual environment automatically per project - Tracks top-level dependencies in Pipfile and pins exact versions in Pipfile.lock - Separates development and production dependencies with `--dev` - Provides security vulnerability scanning via `pipenv check` - Resolves dependency graphs deterministically for reproducible installs ## Architecture Overview Pipenv wraps pip and virtualenv behind a higher-level interface. When you run `pipenv install`, it creates a virtualenv in a centralized location (keyed by project directory hash), resolves dependency versions, installs packages, and updates the lockfile. The resolver uses pip's own resolver under the hood, ensuring compatibility with PyPI and custom indexes. ## Self-Hosting & Configuration - Install globally via `pip install pipenv` or `pipx install pipenv` - Set `PIPENV_VENV_IN_PROJECT=1` to keep the virtualenv inside the project folder - Use `pipenv install --python 3.12` to target a specific Python version - Configure custom PyPI indexes in the Pipfile under `[[source]]` - Run `pipenv lock` to regenerate the lockfile after manual Pipfile edits ## Key Features - Automatic virtualenv creation and activation with `pipenv shell` - Deterministic lockfile that hashes every dependency for integrity - Built-in `.env` file loading for environment variable management - Dependency graph visualization via `pipenv graph` - Security audit with `pipenv check` powered by safety/pip-audit ## Comparison with Similar Tools - **Poetry** — also manages lockfiles and virtualenvs but adds packaging and publishing; Pipenv focuses on development workflow - **uv** — Rust-based and significantly faster at resolution and install; Pipenv is more mature and widely documented - **pip + venv** — standard library approach but lacks lockfiles and automatic env management - **conda** — manages non-Python dependencies too; Pipenv is pip-native and lighter - **PDM** — PEP 621 compliant with modern standards; Pipenv uses its own Pipfile format ## FAQ **Q: Is Pipenv still maintained?** A: Yes. Pipenv is actively maintained under the Python Packaging Authority (PyPA) and receives regular releases. **Q: Can I use Pipenv alongside pyproject.toml?** A: Pipenv uses its own Pipfile format. If you need pyproject.toml-native tooling, consider Poetry or PDM. **Q: How do I deploy with Pipenv?** A: Run `pipenv install --deploy` in CI which fails if the lockfile is out of date, ensuring production matches development. **Q: Where does Pipenv store virtual environments?** A: By default in a centralized cache directory. Set `PIPENV_VENV_IN_PROJECT=1` to create a `.venv` folder in the project root. ## Sources - https://github.com/pypa/pipenv - https://pipenv.pypa.io/en/latest/ --- Source: https://tokrepo.com/en/workflows/491b0aeb-40a1-11f1-9bc6-00163e2b0d79 Author: AI Open Source