I stumbled upon this while researching package management options for python, and found it a really interesting read.

I like python as a language but this mess is something that needs to be addressed for me to consider python for future projects. I can’t imagine how confusing it must be for new users.

  • coffeewithalex@lemmy.world
    cake
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 year ago

    It’s worth noting that there are basically just 3 systems worth considering, maybe even just 2.

    pip is usually part of the python distribution, so any lightweight project can be finished in 1-5 minutes with pip. It’s also quite widespread and the vast majority of publishers (if not all) target pip compatibility.

    Poetry is a great project management framework and it deals with dependency management beautifully. If you’re doing any data engineering or backend development, for any project that has more than 1 dependency and 200 lines of code, then Poetry is probably the best tool to use. Poetry makes the whole mess with helper tools like pip-tools seem outdated.

    Conda is for the crazy world of data science libraries where developers don’t bother with compatibility too much. Conda does it for them. And the users of those libraries can benefit from using conda.

    I think the big competition is between poetry and pip. Maybe one day poetry will come as part of some Python distributions.

    • Fenzik@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Worth noting the thing that conda does well is handle system-level dependencies, there are a lot more binaries available there (beyond just Python packages) that make it easier to install packages without having to compile C++ code or something.

      Besides that I hate it haha, it makes everything else so complicated

      I’ve also not had great experiences with poetry, it’s supposed to use the lock file to lock in dependencies but whenever I did anything the lock file was always being updated which kind of defeats the point. I’m sure it was user error but the fact that the lock file doesn’t stay static by default is already weird to me

      • stilgar [he/him] @infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        It would be interesting to hear what you mean about the lock file being updated. Many Poetry commands should and do touch the lock, like poetry add or poetry update, but of course poetry installshould leave it untouched.

        • Fenzik@lemmy.ml
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          But if I want to add a single new dependency, then I probably don’t want all the rest updated at the same time

    • soldersmoker
      cake
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I’m so glad Poetry came about, it’s great. Back when pipenv was the standard it was barely usable in most instances with how slow it is. Then it seemingly got killed off by some developer infighting basically.

  • Sigmatics@lemmy.ca
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    It is quite telling that the one tool that covers most of the features expected from a packaging tool is one maintained by a single author: PDM.

    In my experience it has been a pleasure to use it as well, even though it is quite new.

  • stilgar [he/him] @infosec.pub
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Our organisation has gone all in on Poetry, no regrets so far. The UX and dlscoverability is just so much better than the other options.

    I do look jealously at languages that have great official tools like go and cargo though.

    • Blackthorn@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I love cargo, but cargo.io could REALLY make good use of namespaces. It’s insane when clear library names are taken by highschoolers at their first project and there is nothing to be done about it. I’d also like some kind of curating on the packages.