Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement | Transition from Pipenv to Poetry for Dependency Management #253

Closed
4 tasks
borland667 opened this issue Mar 11, 2024 · 0 comments · Fixed by #261
Closed
4 tasks

Enhancement | Transition from Pipenv to Poetry for Dependency Management #253

borland667 opened this issue Mar 11, 2024 · 0 comments · Fixed by #261
Labels
enhancement New feature or request

Comments

@borland667
Copy link
Contributor

Enhancement: Integrate Pyenv and Poetry for Superior Python Version and Dependency Management

Current Situation

Our project currently relies on pipenv for both Python version management and dependency management. While pipenv has been a useful tool, we've identified opportunities to enhance our workflow and address certain limitations by adopting pyenv for version management and poetry for dependency management.

Problem

Pipenv offers a combined solution for managing Python versions and dependencies, but it comes with drawbacks such as slower dependency resolution, less efficient handling of multiple Python versions, and a more complex project setup compared to what pyenv and poetry can offer together.

Expected Behavior

Integrating pyenv and poetry would streamline our development workflow by leveraging the best features of both tools—pyenv's flexible Python version management and poetry's efficient dependency handling. This approach is expected to enhance project setup, improve build times, and provide a more intuitive package publishing process.

Proposed Solution and Benefits

  • Objective: Transition to using pyenv for Python version management and poetry for dependency management, moving away from pipenv.
  • Benefits over Pipenv:
    • Faster Dependency Resolution with Poetry: Unlike pipenv, poetry offers a more efficient and faster resolver, significantly speeding up the installation process and updates.
    • Clear and Unified Configuration: Poetry uses a single pyproject.toml file for both project configuration and dependency management, simplifying project setup and maintenance.
    • Advanced Dependency Management: Poetry provides more granular control over dependency versions and better support for dependency groups without the need for multiple files.
    • Streamlined Python Version Management with Pyenv: Pyenv allows for easy switching between multiple Python versions, offering flexibility across various projects that pipenv cannot match.
    • Enhanced Package Publishing Features: Poetry includes built-in support for packaging and publishing to PyPI, making it a better option for library authors in addition to application developers.

Implementation Steps

  1. Prepare for Transition: Outline the migration process from pipenv to pyenv + poetry, including converting dependency files and setting Python versions.
  2. Update Documentation: Revise the README.md and contribution guidelines to reflect the new tools and processes.
  3. Reconfigure CI/CD Pipelines: Ensure that our automated workflows use pyenv to manage Python versions and poetry for dependency installation and project tasks.
  4. Team Training and Support: Provide resources and support to help the team adapt to pyenv and poetry, highlighting the benefits and addressing any questions.

Additional Context

The decision to shift from pipenv to a combined pyenv and poetry setup stems from the need to optimize our development process, taking advantage of each tool's strengths. This enhancement is aimed at improving efficiency, reliability, and the overall developer experience.

Action Items

  • Develop a detailed migration plan from pipenv to pyenv + poetry.
  • Update all project documentation to reflect the change in tooling.
  • Modify CI/CD configurations to integrate with pyenv and poetry.
  • Organize training sessions to familiarize the team with the new setup.

Feedback and suggestions on this transition are highly valued. Please share any thoughts or experiences that could help improve our approach to Python version and dependency management.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant