It is great for libraries not so great for tools.
Pushing it on Linux, where you already have the much better native package managers that Homebrew tried to imitate for Mac users, is just a really poor Thanks for your input however pip does not meet out needs for distribution. It is a mess, makes a mess of your machine, and should be avoided completely. It is also the cross-platform "'single' installation option" you were expecting - incorrectly - in Homebrew.įWIW I $%^&ing hate Homebrew on Mac. Pip is actually a better tool for this purpose even than the various Linux package managers, because it allows this kind of per-environment sandboxing that is totally within the developer's control. If you use and develop with Python on a *nix OS and you don't already know this you should probably stop now and find another vocation. If you use or develop with Python on a *nix OS and you aren't sandboxing your tools using virtual envs you are begging for a broken system. No-one is expecting you to handle that too.
Understanding how to use that tool set is a separate issue for the user to deal with that is just part of being a developer. Rather than aim for the lowest common denominator at additional inconvenience for people who know how to use their tools, I would recommend following accepted best practice for the environment tool set you are targeting - in this case Python. If you don't, then you already have a bigger problem to resolve. If you restrict dependency versions instead to ranges, you may get different versions - but if you have good reason for the ranges then you get what you are expecting for the expected reasons.Īs for it screwing up your python environment - if you're using python you should already understand how to configure its environment for you particular operating system. If you restrict its dependencies to exact versions - including the transitive dependencies - then you get an identical installation every time (unless a dependency is no longer available - which is desirable behaviour in this case). For the record, pip does what you tell it to do via your requirements manifest. It has provided a perfectly reproducible installation every time I have used it.
The two likely options are providing an installation script that could install SAM CLI in an isolated and reproducible fashion (most likely still require a supported version of python on the system) or follow the footsteps on the AWS CLI and vend a single binary that has python bundled with it (similar to how we are currently doing MSI's for - That sounds reasonable. We are looking at improving this experience, most likely targeting Linux first but none of this planned yet, as the team is still discussing things. We still do not recommend PIP, as it does not provide a reproducible installation and is very easy to screw up your python environment (among other things). This allowed us to reach both platforms with a 'single' installation option. Mac was initially the target but then we learned that it can also support Linux. To provide some context here: when we initially went down the path of installers, Homebrew was a good way to reach a lot of the community.
We are aware of parts of the community not happy with installing Homebrew to install SAM CLI.