2023-02-24

Poetry

What is Poetry

Poetry is a modern package manager for Python that simplifies the process of managing dependencies and packaging for projects. It aims to provide a user-friendly and intuitive interface while also supporting best practices for Python packaging and distribution.

With Poetry, developers can easily manage their project dependencies, create virtual environments, and package their projects for distribution. It also provides features such as dependency resolution, semantic versioning, and lock files to ensure reproducible builds.

Poetry has gained popularity among the Python community and is quickly becoming the go-to package manager for many developers.

Installing Poetry

You can install Poetry with pip. Installing Poetry with pip is a straightforward process that involves a few simple steps. Before we begin, it's important to note that Poetry is a powerful Python package manager that simplifies the installation and management of dependencies in your projects.

To get started, you will need to have pip installed on your system. If you're using Python 3.4 or later, pip should already be installed. If not, you can install it by following the instructions provided on the official Python website.

Once you have pip installed, you can proceed with the installation of Poetry. Here's how to do it:

  1. Open a command prompt or terminal window and enter the following command:
bash
$ pip install poetry

This command will use pip to download and install the latest version of Poetry.

  1. Verify the installation by running the following command:
bash
$ poetry --version

This command should return the version number of Poetry that you just installed.

  1. (Optional) If you are upgrading Poetry from an older version, you can use the following command to update it:
bash
$ pip install --upgrade poetry

This command will download and install the latest version of Poetry and replace the older version.

With these simple steps, you should now have Poetry installed on your system and be ready to start using it to manage dependencies in your Python projects. To get started with Poetry, you can check out the official documentation for more information and examples.

Poetry commands and basic usage

Poetry provides a range of commands that allow you to easily manage your Python projects, dependencies, and packaging. Here's a quick overview of some of the most commonly used Poetry commands and their basic usage:

Command Description
poetry new project-name This command creates a new Python project with the specified name and initializes it as a Poetry project.
poetry add package-name This command adds the specified package to your project's dependencies and installs it.
poetry remove package-name This command removes the specified package from your project's dependencies and uninstalls it.
poetry update package-name This command updates the specified package to the latest version and updates your project's dependencies.
poetry install This command installs all the packages listed in your project's pyproject.toml file.
poetry show This command displays a list of all the packages installed in your project, along with their versions and dependencies.
poetry shell This command activates a virtual environment with your project's dependencies, allowing you to work in an isolated environment.
poetry run script-name This command runs the specified script from your project's pyproject.toml file.
poetry lock This command generates a lock file that specifies the exact versions of each dependency that your project requires.
poetry build This command builds a distributable package for your project in the "dist" directory.

By using these simple commands, you can easily manage your Python projects and dependencies using Poetry.

Managing dependencies with Poetry

Managing dependencies is an important part of developing any software project, and Poetry makes it easy to manage dependencies in your Python projects. Poetry is a powerful Python package manager that simplifies the installation and management of dependencies, allowing you to focus on developing your project. Here's how to manage dependencies with Poetry:

Adding Dependencies

To add a new dependency to your project, you can run the following command:

bash
$ poetry add package-name

Replace "package-name" with the name of the package you want to install. This command will install the specified package and add it to your project's dependencies.

Updating Dependencies

To update a dependency to a new version, you can run the following command:

bash
$ poetry update package-name

Replace "package-name" with the name of the package you want to update. This command will update the specified package to the latest version and update your project's dependencies.

Removing Dependencies

To remove a dependency from your project, you can run the following command:

bash
$ poetry remove package-name

Replace "package-name" with the name of the package you want to remove. This command will remove the specified package from your project's dependencies.

Listing Dependencies

To view a list of all the dependencies in your project, you can run the following command:

bash
$ poetry show

This command will display a list of all the packages installed in your project, along with their versions and dependencies.

Generating Lock File

Once you've added all the necessary dependencies to your project, you can use Poetry to generate a lock file that specifies the exact versions of each dependency that your project requires. To generate the lock file, run the following command:

bash
$ poetry lock

This command will create a lock file that specifies the exact versions of each dependency that your project requires, ensuring that your project will always use the correct versions of its dependencies.

With these simple commands, you can easily manage dependencies in your Python projects using Poetry.

pyproject.toml

pyproject.toml is a configuration file used by Poetry. This file contains metadata about your Python project, as well as information about your project's dependencies, build requirements, and other settings.

Here's an overview of the different sections in pyproject.toml and what they do:

Section Description
[tool.poetry] This section contains general configuration options for Poetry, such as the project name, version, author, and license.
[tool.poetry.dependencies] This section lists the dependencies required by your project, along with their version constraints. You can add or remove dependencies using the poetry add and poetry remove commands.
[tool.poetry.dev-dependencies] This section lists the development dependencies required by your project, such as testing frameworks or code analysis tools. These dependencies are not required for running your project, but are necessary for development and testing.
[tool.poetry.build-system] This section specifies the build system used by your project. By default, Poetry uses setuptools, but you can use other build systems such as flit or poetry.
[tool.poetry.scripts] This section lists the command-line scripts provided by your project. These scripts can be executed using the poetry run command.
[tool.poetry.extras] This section allows you to define extra dependencies that are only required in certain situations. For example, you might define an "extras" section for database drivers that are only needed if you're using a specific database.
[build-system] This section is used by build tools such as setuptools to specify build dependencies and other build settings.

poetry.lock

When you install dependencies using Poetry, it generates a poetry.lock file that contains information about the exact versions of each package that were installed. This file serves as a record of the specific dependencies that were installed for a particular project, and ensures that the same versions of dependencies are installed each time the project is installed or updated.

Here's how the poetry.lock file works:

  • Locking Dependencies
    When you run poetry install, Poetry reads your pyproject.toml file and creates a virtual environment for your project. It then installs the required dependencies in the virtual environment, along with their exact versions. This ensures that you have the same versions of dependencies installed across different environments and machines.

  • Version Control
    The poetry.lock file acts as a version control system for your project's dependencies. It ensures that the same versions of dependencies are installed each time the project is installed or updated, which helps prevent version conflicts and ensures reproducibility.

  • Resolving Conflicts
    If there are conflicts between dependencies, Poetry uses a sophisticated algorithm to resolve them and ensure that the correct versions of dependencies are installed. The poetry.lock file contains information about how these conflicts were resolved, which can help you troubleshoot any issues that arise.

  • Collaboration
    The poetry.lock file is essential for collaboration on Python projects. It ensures that all developers have the same versions of dependencies installed, which makes it easier to collaborate and reduces the likelihood of compatibility issues.

Comparison of Poetry and requirements.txt

Python developers have traditionally used a simple text file called requirements.txt to manage dependencies in their projects. However, in recent years, a new Python package manager called Poetry has gained popularity among developers. Here's a comparison of Poetry and requirements.txt to help you understand the differences between these two tools:

  • Dependency Management
    The most significant difference between Poetry and requirements.txt is how they manage dependencies. While requirements.txt simply lists the names of packages and their versions, Poetry goes a step further by creating a virtual environment for each project and managing dependencies on a per-project basis. This makes it easier to manage dependencies and ensures that each project has the correct versions of its dependencies installed.

  • User Interface
    Poetry provides a modern and intuitive command-line interface that makes it easy to manage dependencies and create distributable packages for your projects. In contrast, requirements.txt requires developers to manually install dependencies using pip, which can be time-consuming and error-prone.

  • Package Management
    Poetry is not just a dependency manager, but also a packaging tool. It simplifies the packaging of Python projects by allowing developers to create distributable packages in a few simple steps. requirements.txt, on the other hand, is simply a list of packages and their versions, and does not provide any packaging functionality.

  • Configuration
    Poetry stores its configuration in a pyproject.toml file, which makes it easy to manage project settings and dependencies in a single location. In contrast, requirements.txt does not provide any configuration file, and developers must manage project settings and dependencies separately.

  • Compatibility
    Both Poetry and requirements.txt are compatible with different Python versions and can be used with a variety of Python projects. However, Poetry provides more advanced features and a better user interface, making it the preferred choice for many developers.

References

https://python-poetry.org/docs/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!