8 ms·
Pip is so bad vs rivals, conda is so much better I'm amazed it's not the recommended package manager.
by Jsharm 7y ago
Pip is so bad vs rivals, conda is so much better I'm amazed it's not the recommended package manager.
- mehrdadn 7y agoWhat I don't get is why pip just happily uninstalls a package that breaks dependencies? It's like, "you had only 1 job..."
- Master_Odin 7y agoBecause it's not really a dependency manager, just a "dumb" installer and uninstaller. It's for this same reason you can specify an incompatible set of dependencies in requirements.txt and pip won't bat an eye.
- thecleaner 7y agoWhat about installing from source ? conda does not support it at all. For some esoteric python packages which use C++ or Cython backends, it is sometimes impossible to install those packages and installing from source becomes the only viable option. pip is quite awesome for this.
- tempay 7y agoThis is where conda excels because it uses its own toolchain and therefore doesn’t need to make any assumptions about the system. Someone needs to have packaged it, ideally using conda-forge, but it should then just work. Pip installing all from source is tricky to get working correctly as soon as you require a newer compiler or dependencies. Providing wheels works well but is a pain to set up correctly with good platform coverage. That said, it doesn’t need to be one or the other. Conda integrates well with pip so you can install a base layer with conda then pip install your more esoteric dependencies.
- Mathnerd314 7y agoIt doesn't integrate well. Conda HQ has a bunch of warnings: https://www.anaconda.com/using-pip-in-a-conda-environment/ https://www.anaconda.com/using-pip-in-a-conda-environment/
- mlthoughts2018 7y agoConda was explicitly designed with installation from source, especially for C/C++ extension modules, as a first-class feature. It is bar none the easiest and most effective way to solve that aspect of packaging and environment management. Just look into conda-forge feedstocks for extension modules for a ton of examples. Conda even adds advanced features, like managing multiple compiler-specific build variants in the same environment, that go way beyond anything other Python packaging tools do for this. On top of this, you can install pip into conda environments and still use pip to manage packages if you want, or mix and match conda & pip with a pip section in conda’s environment.yml. Conda automatically manages pip installation into the activated conda environment.
- hannibalhorn 7y agoI certainly understand why non-technical folks would like conda, but to me, it's 1) extremely slow to restore a complete environment and 2) hard to interoperate with, as it uses it's own compiler and toolchain. Personally, I've come to prefer homebrew python + pip for development on macOS (even though said python is not optimized), and clearlinux + pip for Linux and production use. Clearlinux actually gives you a pretty simple way to install a highly optimized python and most all common libs (numpy, scipy, ML stuff, even with GPU and Intel MKL support) - then you just run a pip install -r requirements.txt to get the small, pure python stuff that you want on top that foundation.
- pacala 7y agoConda to install python, pip to manage dependencies.