I was just editing my Dockerfile and suddenly IntelliJ showed me the message “No” without any context.

  • bamboo@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    17 days ago

    Curious what others have to say, but my go to is to have a requirements.in with direct packages I need for the project, and then run pip-compile to generate all the dependencies with their exact version at the time so that deployments are repeatable. This works well for deployment, but if I were writing a library for others to use, I think you put the direct dependencies in setup.py

    • mickkc@lmy.ndu.wtfOP
      link
      fedilink
      arrow-up
      0
      ·
      17 days ago

      I don’t quite understand that. I did some research, and I read that the requirements.txt is somehow generated from requirements.in. But what is the difference between the two files then? Could you give me an example of what a requirements.in file would look like?

      Thank you!

      • scrion@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        17 days ago

        Please use a pyproject.toml file for both project setup and dependency management. It actually is standardized now in PEPs.

        uv is a great tool, now comes with a build tool as well. It has become a de-facto standard.

      • bamboo@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        0
        ·
        17 days ago

        Well if the requirements.txt is pinned to a specific version of a dependency of a dependency, you might not know or really care why that’s set. But then this becomes a nightmare and dependency hell laterif you want a newer version of some package, and that newer version requires a bunch of newer packages and loses the others. At that point you probably will toss your old file and start a new one from scratch piecing together all the requirements with like pip freeze in a new virtual environment.

        Sure you could omit the versions, but then everytime you deploy, you don’t know what you’re going to get and a deployment today would be very different next week with a whole bunch of different versions of dependencies.