3 ms·
conda (and its derivatives that are also “conda” now), and conda-forge specifically, are the best ways to install things that will work across operating systems
by prpl 11mo ago
conda (and its derivatives that are also “conda” now), and conda-forge specifically, are the best ways to install things that will work across operating systems, architectures, and languages - without having to resort to compiling everything.
Want to make sure a software stack works well on a Cray with MPI+cuda+MKL, macOS, and ARM linux, with both C++ and Python libraries? It’s possible with conda-forge.
- levocardia 11mo agoExcept the ONE annoying quirk that certain major projects and repos let their conda distribution get stale.
- kombine 11mo agoFor me the best way to install things across operating systems has been nix. I wish it was more popular in the ML community.
- the__alchemist 11mo agoYou can do all of the above with Wheels.
- prpl 11mo agoCan you show me someone who has packaged log4cxx in a wheel? Is it in pip? Arbitrary examples, I know, but I moved a large software that was truly mixed C++ and python project to conda-forge and all sorts of random C++ dependencies were in there, which drastically simplified distribution and drastically reduced compile time. If I had done it today, it might be nix+bazel, or maybe conda+bazel, but maintaining a world of C++ libraries for distribution as wheels does not sound like fun - especially because nobody is doing that work as a community now
- the__alchemist 11mo agoI wrap Rust/CUDA programs in wheels. I've packaged arbitrary binaries in wheels, like software that's not directly related to Python. Can't say it works for everything, but I suspect so. You just run `maturn build`, then it can be installed with pip. Conda is like Jquery or Bootstrap: It was necessarily before the official tools evolved. Now we don't need them any more, but they still are around for legacy reasons. You still need it for example, for some Moleular dynamics packages, but that's due to the package publishers choosing it.
- neves 11mo agoConda is hell for multi operationg systems projects. Its lock file is OS dependent. You can't commit it and hope it will work anywere. It is probably the easiest way to install a lot of binary dependencies, good for who doesn't have experience with sofware development and don't care with reproductbility.
- aragilar 11mo agoBut either you're not doing anything that is OS specific (and then you probably could just use pip), or the OS does make a difference, and hence you need to reflect that in the lock file.
- prpl 11mo agoYou generate multiple lock files for each OS/Arch variant. You specify the dependency versions in a different file (may also be in a recipe)