mirror of
https://github.com/Rainyy21/framework_note.git
synced 2026-10-11 00:30:29 -04:00
vault backup: 2026-05-30 16:02:33
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
---
|
||||
tags:
|
||||
- devop
|
||||
- video
|
||||
- poetry
|
||||
- python
|
||||
up: "[[00_devop_note]]"
|
||||
related:
|
||||
- "[[Poetry]]"
|
||||
- "[[poetry_guide]]"
|
||||
- "[[poetry_project_ideas]]"
|
||||
source:
|
||||
author:
|
||||
published:
|
||||
---
|
||||
# Poetry: Dependency Management for Python
|
||||
|
||||
Poetry is a tool for **dependency management** and **packaging** in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. Poetry offers a lockfile to ensure repeatable installs, and can build your project for distribution.
|
||||
|
||||
## Similarities to Maven (Java)
|
||||
|
||||
If you are familiar with Apache Maven, you can think of Poetry as serving a similar purpose in the Python ecosystem:
|
||||
|
||||
| Feature | Maven (Java) | Poetry (Python) |
|
||||
| :--- | :--- | :--- |
|
||||
| **Project Configuration** | `pom.xml` | `pyproject.toml` |
|
||||
| **Dependency Resolution** | Resolves transitive dependencies | Resolves transitive dependencies with a deterministic solver |
|
||||
| **Locking** | No direct equivalent (uses version ranges in POM) | `poetry.lock` (ensures exact versions) |
|
||||
| **Build & Packaging** | Builds JAR/WAR files | Builds Wheel and sdist packages |
|
||||
| **Publishing** | Deploys to Central/Nexus | Publishes to PyPI or private repositories |
|
||||
| **Environment Management**| Relies on external JRE/JDK | Manages Virtual Environments automatically |
|
||||
|
||||
## Key Concepts
|
||||
|
||||
### 1. `pyproject.toml`
|
||||
This is the single source of truth for your project. It replaces `setup.py`, `requirements.txt`, `setup.cfg`, `MANIFEST.in` and `pipfile`.
|
||||
|
||||
### 2. Deterministic Resolution
|
||||
Poetry comes with a custom dependency resolver that will always find a solution if one exists, or clearly explain why it failed.
|
||||
|
||||
### 3. Isolation by Default
|
||||
Poetry always runs in isolation. It either uses your existing virtual environment or creates its own to ensure that your project dependencies don't leak into your global Python installation.
|
||||
|
||||
## Basic Commands
|
||||
|
||||
- `poetry init`: Interactively create a `pyproject.toml` file.
|
||||
- `poetry add <package>`: Adds a dependency to `pyproject.toml` and installs it.
|
||||
- `poetry install`: Installs the dependencies specified in `pyproject.toml` (or `poetry.lock` if present).
|
||||
- `poetry update`: Updates dependencies to their latest versions according to `pyproject.toml` and updates the lock file.
|
||||
- `poetry run <command>`: Runs a command within the project's virtual environment.
|
||||
- `poetry shell`: Spawns a shell within the virtual environment.
|
||||
|
||||
## Why use Poetry over Pip?
|
||||
|
||||
While `pip` is the standard package installer, it doesn't handle dependency resolution or project metadata as comprehensively as Poetry. Poetry provides a more "all-in-one" experience, much like Maven does for Java, by combining dependency management, environment isolation, and packaging into a single tool.
|
||||
Reference in New Issue
Block a user