You can use nix to do your package management. It has many features and advantages (build speed, deterministic build environments, language agnosticism, etc), but specific to what you brought up it makes it trivial to declare a runtime dependency of package A on package B, and guarantee that as long as package A is installed, that package B will be as well, and be accessible to A. I believe it&#x27;s pretty popular in the Haskell community; I do all of my Haskell development with it and use it with Python at work, where it&#x27;s slowly starting to gain traction at my company.