How to Use Poetry in Python?

Poetry is a dependency management and packaging tool for Python that aims to simplify the process of managing dependencies and creating distributable packages. It also provides a consistent and reproducible environment for your Python projects. Here’s how you can use Poetry in your Python projects:

  1. Installation: First, you need to install Poetry. You can do this using pip:
pip install poetryCode language: Python (python)
  1. Create a New Project: Navigate to the directory where you want to create your Python project and run:
poetry new project_nameCode language: Python (python)

This will create a new directory named project_name with a basic project structure and a pyproject.toml file.

  1. Managing Dependencies: Open the pyproject.toml file using a text editor. You will see a section called [tool.poetry.dependencies]. Here, you can list your project’s dependencies along with their version constraints.

For example:

python = "^3.8"
requests = "^2.26.0"Code language: Python (python)

After editing the pyproject.toml file, you can run the following command to install the dependencies:

poetry installCode language: Python (python)

Poetry will create a virtual environment for your project and install the specified dependencies within it.

  1. Running Scripts: Poetry provides a way to run scripts within your project’s virtual environment. You can add your custom scripts under the [tool.poetry.scripts] section in the pyproject.toml file. For example:
hello = "my_module:main"Code language: Python (python)

This would allow you to run your main function from the my_module module using the command poetry run hello.

  1. Creating a Package: Poetry can also help you create a distributable package for your project. To do this, run:
poetry buildCode language: Python (python)

This will create a distributable package (source distribution and wheel) in the dist directory.

  1. Other Commands: Poetry provides a range of other commands to manage your project, such as updating dependencies (poetry update), adding new dependencies (poetry add package-name), removing dependencies (poetry remove package-name), and more.
  2. Activating the Virtual Environment: If you want to activate the virtual environment created by Poetry to work directly in it, you can use:
poetry shellCode language: Python (python)
  1. This command will activate the virtual environment, and you can deactivate it using the exit command.

These are the basic steps to get started with using Poetry in your Python projects. Poetry’s official documentation provides more in-depth information about its features and advanced usage.

What is the difference between Python poetry and pip?

Python Poetry and pip are both tools used in Python development, but they serve different purposes and have different scopes. Here are the key differences between them:

  1. Dependency Management:
    • pip: pip is the default package manager for Python. It’s used to install and manage packages (dependencies) for your Python projects. You define dependencies in a requirements.txt file and use pip install to install them.
    • Python Poetry: Poetry is a higher-level tool that encompasses dependency management, project packaging, and more. It not only manages dependencies but also creates a virtual environment for your project and handles the packaging and distribution of your project as well.
  2. Project Management:
    • pip: pip primarily focuses on managing packages and doesn’t provide a complete solution for project management, virtual environments, and packaging.
    • Python Poetry: Poetry provides a comprehensive project management solution. It creates a virtual environment for your project, manages dependencies with a pyproject.toml file, and helps you build and distribute your project packages.
  3. Virtual Environments:
    • pip: While pip can work with virtual environments created separately using venv or virtualenv, it doesn’t directly manage the virtual environment itself.
    • Python Poetry: Poetry automatically creates a virtual environment for your project and ensures that your project’s dependencies are isolated within it. This simplifies dependency management and avoids conflicts between different projects.
  4. Dependency Resolution:
    • pip: pip installs packages based on the requirements specified in the requirements.txt file. However, resolving complex dependency trees, especially with version conflicts, can be challenging.
    • Python Poetry: Poetry uses a more advanced dependency resolution algorithm that aims to solve complex dependency conflicts and find the best compatible versions of packages. This can lead to more reliable and consistent dependency management.
  5. Project Packaging:
    • pip: pip doesn’t directly handle creating distributable packages for your project.
    • Python Poetry: Poetry provides tools to easily build source distributions and wheels for your project. It also generates the necessary metadata files required for publishing your package to the Python Package Index (PyPI).
  6. User Experience:
    • pip: While pip is powerful and widely used, its syntax and usage can sometimes be cumbersome, especially for more complex projects.
    • Python Poetry: Poetry aims to provide a more user-friendly and intuitive experience. Its commands and project structure are designed to simplify common tasks in Python development.

In summary, pip is primarily focused on installing Python packages, while Python Poetry provides a more holistic approach to project management, dependency resolution, virtual environments, packaging, and distribution. Depending on your project’s complexity and your preferences, you might choose either tool or even use them in combination for different aspects of your development workflow.

Read More;

  • Muhammad Nabil

    I am a skilled and experienced Python developer with a huge passion for programming and a keen eye for details. I earned a Bachelor's degree in Computer Engineering in 2019 from the Modern Academy for Engineering and Technology. I am passionate about helping programmers write better Python code, and I am confident that I can make a significant contribution to any team. I am also a creative thinker who can come up with new and innovative ways to improve the efficiency and readability of code. My specialization includes Python, Django, SQL, Apache NiFi, Apache Hadoop, AWS, and Linux (CentOS and Ubuntu). Besides my passion for Python, I am a solo traveler who loves Pink Floyd, online video games, and Italian pizza.

Leave a Comment