Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You're right.

The thing I want is a good monorepo solution for Python. There's at least 3 for JavaScript.

As much hate as JS gets, its package managers are also much better than Pip.

In order to manage complexity of Python as you do your big projects, you really need to do "enterprisey" patterns like DI. Even though it's rare for Python programmers to write like that.

Re: test runner: pytest is pretty good



What are you looking for in a monorepo solution?


probably managing requirements.txt of sub-projects and virtual environment management?


This is possible with existing general monorepo tools. We use Bazel for Python and other languages. With Python, we have a single requirements.txt at the root of the monorepo, but each target (a Python package, a module, an app, or some combination thereof) depends only on the packages it needs and the transitive packages of its dependencies.

Then if you need to do something like build a distributable archive for your app (say, to deploy it to lambda), you can use Bazel's dependency graph to get only the packages that the app transitively depends on.


What about the opposite case? I have several python packages with one requirements.txt each. But for development I want to have a single “root” virtual env?


In that case it seems like you could just have one all_requirements.txt that includes the individual files like:

  -r package_a/requirements.txt
  -r package_b/requirements.txt
etc.


yes I get it. Good point.

Is bazel also a good choice for managing the virtual environments of my developers? Do you have any examples?


At this point I would say no, but work is in progress to improve in this respect [1].

At my place of work we use some rules [2] to build virtual envs from Bazel dependencies. It's been a great stop-gap for us and allows us to use traditional Python tooling (e.g. PyCharm) with Bazel-managed dependences.

[1] https://github.com/aspect-build/rules_py [2] https://github.com/cedarai/rules_pyvenv




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: