Poetry Package Manager for Python
- id: 1756294773
- Date: Aug. 27, 2025, 11:45 a.m.
- Author: Donald F. Elger
Poetry Package Manager for Python
What
Poetry is a modern dependency management and packaging tool for Python projects. It’s designed to replace the traditional combination of pip, virtualenv, and setup.py with a single, unified tool that handles:
Dependency management - Managing your project’s dependencies and their versions
Virtual environment creation - Automatically creating and managing isolated Python environments
Package building and publishing - Building your project into distributable packages
Lock file generation - Creating reproducible builds across different environments.
A lock file is a automatically-generated file that records the exact versions of all dependencies (and their sub-dependencies) that were installed in your project at a specific point in time. In Poetry, this file is called
poetry.lock
.
Poetry uses a pyproject.toml
file to define your project
configuration, dependencies, and metadata in a standardized format,
making Python project management more streamlined and reliable.
Why Learn and Use This??
Simplified Workflow: Instead of juggling multiple tools (pip, virtualenv, setuptools), Poetry provides a single command-line interface for all your project needs.
Better Dependency Resolution: Poetry has a sophisticated dependency resolver that automatically finds compatible versions of all your dependencies, preventing version conflicts that can break your project.
Reproducible Environments: The automatically
generated poetry.lock
file ensures that everyone working on
your project (including production deployments) uses exactly the same
dependency versions.
Modern Python Standards: Poetry follows current Python packaging standards and best practices, making your projects more professional and maintainable.
Seamless Publishing: Built-in support for building and publishing packages to PyPI or private repositories with simple commands.
Virtual Environment Management: Automatically creates and manages virtual environments without you having to think about it.
How to use this ???
Installation
# Install Poetry (recommended method)
curl -sSL https://install.python-poetry.org | python3 -
# Or via pip (alternative)
pip install poetry
Starting a New Project
# Create a new project
poetry new my-project
cd my-project
# Or initialize Poetry in an existing directory
poetry init
Managing Dependencies
# Add a dependency
poetry add requests
# Add a development dependency
poetry add pytest --group dev
# Add with version constraints
poetry add "django>=3.0,<4.0"
# Remove a dependency
poetry remove requests
Working with Virtual Environments
# Install all dependencies (creates venv automatically)
poetry install
# Activate the virtual environment
poetry shell
# Run commands in the virtual environment
poetry run python main.py
poetry run pytest
Building and Publishing
# Build your package
poetry build
# Publish to PyPI
poetry publish
# Publish to a private repository
poetry publish -r my-repo
Useful Commands
# Show current dependencies
poetry show
# Update dependencies
poetry update
# Check for outdated packages
poetry show --outdated
# Export requirements.txt (for compatibility)
poetry export -f requirements.txt --output requirements.txt
Example pyproject.toml Structure
[tool.poetry]
name = "my-awesome-project"
version = "0.1.0"
description = "A sample Python project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
fastapi = "^0.68.0"
[tool.poetry.group.dev.dependencies]
pytest = "^6.2.4"
black = "^21.6b0"
flake8 = "^3.9.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Poetry transforms Python project management from a complex juggling act into a smooth, professional workflow that scales from personal scripts to enterprise applications.
Poetry Shell Depreated
Starting with Poetry 2.0.0 (released in 2024), Poetry replaced
poetry shell
with poetry env activate
Announcing
Poetry 2.0.1 | Blog | Poetry - Python dependency management and
packaging made easy in their documentation and examples.
Current Alternatives
Instead of poetry shell
, you now have several
options:
1. Use poetry run
(Recommended)
# Instead of activating a shell, run commands directly (in the shell)
poetry run python main.py
poetry run pytest
poetry run pip list
2. Manual Virtual Environment Activation
# Find the virtual environment path
poetry env info --path
# On Linux/MacOS
source $(poetry env info --path)/bin/activate
# On Windows
$(poetry env info --path)\Scripts\activate