Registry / devops / poetry

poetry

JSON →
cli2.3.2pypypiunverified

Poetry is a comprehensive tool for Python dependency management and packaging, leveraging `pyproject.toml` for configuration and a `poetry.lock` file for consistent, reproducible environments. It handles dependency resolution, virtual environment management, and project building. The current version is 2.3.2, with frequent minor and patch releases, though without a fixed release cycle.

pipx install poetry
INSTALL
IMPORT
SIG · POETRY
P
poetry
devopspythonv2.3.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Initialize a new Poetry project, add dependencies, install them into a managed virtual environment, and execute commands within that environment.

# 1. Create a new project poetry new my-project # 2. Navigate into the project directory cd my-project # 3. Add a dependency poetry add requests # 4. Install project dependencies (creates virtual environment if needed) poetry install # 5. Run a command within the project's virtual environment poetry run python -c "import requests; print('Requests is installed!')"
poetry --version
Debug
Known issues
breakingPoetry 2.0 introduced significant breaking changes. Commands like `poetry export` and `poetry shell` are no longer core features and require separate plugins (`poetry-plugin-export` and `poetry-plugin-shell`). `poetry env activate` is the recommended replacement for `poetry shell`. The interface for `poetry add --optional` also changed. The minimum Python version for generated SDKs changed to 3.10.
fix
Install necessary plugins (`poetry self add poetry-plugin-export`, `poetry self add poetry-plugin-shell`), use `poetry env activate` instead of `poetry shell`, and review `poetry add` usage for optional dependencies. Ensure Python 3.10+ is used for projects requiring it.
affects: >=2.0.0
breakingPython 3.9 support was dropped in Poetry 2.3.0. Projects requiring 3.9 will need to use an older Poetry version or upgrade their Python environment.
fix
Upgrade project's Python version to 3.10 or higher, or explicitly use a Poetry version that supports Python 3.9 (e.g., `poetry==2.2.*`).
affects: >=2.3.0
gotchaPEP 735 dependency groups (introduced in Poetry 2.2.0) had issues with lock file hashing, meaning changes to these groups were not always reflected in `poetry.lock`. This was fixed in Poetry 2.3.0.
fix
When using PEP 735 dependency groups, ensure you are running Poetry 2.3.0 or later. If using older 2.2.x, manually run `poetry lock` to ensure `poetry.lock` is up-to-date after modifying dependency groups.
affects: 2.2.0 - 2.2.x
gotchaDo NOT install Poetry using `pip install poetry` directly into your project's virtual environment. This can lead to dependency conflicts and unintended upgrades. Poetry should be installed in an isolated environment (e.g., via `pipx` or its official installer).
fix
Use `pipx install poetry` or the official installer script to install Poetry globally in its own isolated environment. Avoid `pip install poetry` within your project's virtual environment.
affects: All versions
gotchaThe default behavior of `installer.re-resolve` changed from `true` to `false` in Poetry 2.3.0. This means Poetry now evaluates locked groups and markers to decide on package installation, rather than always re-resolving. While this makes installation clearer and faster, it might expose issues if your lock file or environment setup was previously relying on implicit re-resolution.
fix
Review your installation workflows. If you encounter unexpected installation behavior, you can revert to the old default by setting `installer.re-resolve = true` in your Poetry configuration.
affects: >=2.3.0
gotchaThe caret (`^`) operator for dependency version constraints can be a 'footgun' if applied indiscriminately, especially to packages that do not strictly follow Semantic Versioning (e.g., CalVer like `tzdata`). This can lead to either overly strict or overly lax dependency pinning, causing issues for users or maintainers.
fix
Carefully consider the versioning scheme of each dependency. For non-SemVer packages, use more precise constraints (e.g., `~=`, explicit `<` bounds) instead of `^`. Review and manually adjust constraints where necessary.
affects: All versions
deprecatedIn a future minor release, Poetry will change its default behavior for projects without an explicit `[build-system]` section in `pyproject.toml`. It will fall back to `setuptools` instead of the current behavior of warning and defaulting to `poetry-core`.
fix
Explicitly define your build system in `pyproject.toml` (e.g., `[build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"`) to ensure consistent behavior across Poetry versions.
affects: Upcoming minor release after 2.3.x
gotchaA generic shell error occurred: `sh: 1: -q: not found`. This indicates that the shell (`sh`) failed to find or execute a command or argument that it interpreted as a command (in this case, '-q'). This often points to missing system dependencies, a misconfigured PATH, or an incorrectly constructed command being passed to the shell. It is not directly related to Poetry's internal logic or Python version compatibility.
fix
Review the exact command being executed that leads to this error. Ensure all necessary executables and utilities used in your build or test scripts are installed and accessible via the system's PATH. Verify that commands are correctly formatted and that arguments are not being misinterpreted as commands by the shell.
affects: All versions
gotchaA shell command failed with 'sh: -q: not found'. This indicates that the shell interpreter (typically /bin/sh, often `dash` on Alpine Linux) does not support the `-q` (quiet) option. This can happen if test scripts, build commands, or internal tools assume specific shell features not available in all POSIX-compliant shells.
fix
Review any scripts or commands executed during the test/build process for incompatible shell options. Ensure commands are compatible with the default `/bin/sh` interpreter of the target environment (e.g., `dash` on Alpine). If specific shell features are required, explicitly invoke `bash` or another compatible shell.
affects: All versions
Errors
Common errors & fixes
poetry: command not found
The directory containing the Poetry executable is not included in your system's PATH environment variable, preventing your shell from finding the command.
fix
Add Poetry's bin directory to your shell's configuration file (e.g., `~/.bashrc`, `~/.zshrc`, or `~/.profile`). The path is usually `~/.local/bin` or `~/.poetry/bin`. After installation, Poetry typically provides the exact `export PATH="...:$PATH"` command to run. Remember to `source` your shell's config file or restart your terminal after editing.
SolverProblemError: The current project's Python requirement (...) is not compatible with some of the required packages Python requirement:
This error occurs when the Python version specified in your `pyproject.toml` (or the one Poetry is using) does not satisfy the Python requirements of one or more of your project's dependencies.
fix
Adjust the `python` version constraint in your `pyproject.toml` to be compatible with your dependencies' requirements, or use `poetry env use <python_path>` to switch to a Python interpreter that satisfies all constraints. You may need to update or downgrade specific dependencies to find a compatible set.
FileNotFoundError: [Errno 2] No such file or directory: 'pyproject.toml'
Poetry commands must be run from within a project's root directory, where the `pyproject.toml` file is located, or in a subdirectory of a project with a `pyproject.toml` in a parent directory. This error indicates Poetry cannot find this essential configuration file.
fix
Navigate to the root directory of your Poetry project (where `pyproject.toml` resides). If you are initializing a new project, run `poetry init` to create the `pyproject.toml` file. Ensure the file hasn't been accidentally deleted or renamed.
Poetry taking too long to resolve dependencies / dependency resolution process slow
Slow dependency resolution can be caused by complex dependency graphs, network issues preventing efficient metadata fetching (especially for packages not fully supported by the PyPI JSON API), or problems with the system's keyring backend on certain operating systems.
fix
Try clearing Poetry's cache with `poetry cache clear --all pypi`. Check your network connection. If on a headless Linux system, setting `export PYTHON_KEYRING_BACKEND=keyring.backends.fail.Keyring` can bypass keyring issues (but be aware of security implications for credentials).
Upgrade
Version history
2.3.2latest on PyPI · released Feb 1, 2026
Audit
Dependencies
pythonrequiredPoetry itself requires Python >=3.10 and <4.0. Note that Poetry manages your project's Python versions but does not install Python interpreters for you.
poetry-corerequiredLightweight PEP 517 build backend implementation for Poetry, typically used transparently by Poetry or other build frontends like pip.
Agent activity
15 hits · last 30 days
node
14
Resources
poetry — pip install poetry · libregistry