Case in point - the Azure ML Jupyter notebooks run on a farm of Linux/docker machines:
https://blogs.technet.microsoft.com/machinelearning/2016/02/...
Once a model is built, it can be deployed for production/scale to the Azure ML backend which runs entirely on a farm of Windows machines.
Both environments have matching Anaconda distros running underneath which makes running on two different OS's practically a non-issue. In fact 95% of our users probably have no idea their notebooks & production site run two OS's (in large part thanks to Python, Linux, Docker, Anaconda, ... and lots of other great open source software).
Of course, there's time and place for eschewing Anaconda, especially if you are trying to ensure your installation and dependencies are minimal. That said, for most data scientists who are workaday *NIX users at best, Anaconda is such a productivity boost.
EDIT: Actually, my analogy needs further qualifications. You _can_ get into dependencies/missing-header-files hell in Ubuntu, but it usually doesn't happen in the first few hour/days. Both Ubuntu and Anaconda have great "first 5 minutes to 5 days" experience, and that goes a long way in ensuring the adoption of underlying technology.
pip install jupyter
pip install numpy
pip install scipy
pip install scikit-learn
pip install matplotlib
The only problem I had was with OpenCV, which requires manual make installation if you want the contrib package. The other problem was when trying to install scikit-learn, it requires manual pip installation of scipy.
For example, you can't get through PyYaml unless python-dev is installed on Ubuntu. I am not sure if wheel would fix it but I don't think so.
Anyway I just noticed that PyPI only supports binary packages for Windows and Mac OS X. Although, you could still generate wheels of packages that you use by using something like this:
pip wheel -r requirements.txt
You can then install them with pip install <file> or (unfortunately I forgot the option, perhaps it was -i) you can use an option to point to a directory containing wheels and pip install to install the main package. It should use all dependencies in that directory as well.So yeah Linux is not the most friendly environment for Python Wheels.
I don't see the desire to have pip as the baseline. For me, the conda packaging is much more informative and placing everything you need for multiplatform support into an /info directory with a meta.yaml is a lot more effective than going through the steps of PyPI. conda also makes uploading and hosting on anaconda.org extremely easy.
Normally there is the whole "gee, I don't want to learn another package manager" -- but conda / anaconda.org is extremely worth it. It really is a major engineering step forward from the existing package deployment strategies in Python.
I even configure my travis.yml CI scripts to download Miniconda, create a conda environment from a requiremenets.txt, and then build and test my code via conda on the contiguous integration VM itself.
The only worry is how strongly tied conda and anaconda.org are to the future of Continuum. Given how much Continuum speaks of open-source work, one would hope that these projects essentially live independently (or that forks of them would) but you never know. I do admit that is a major downside.
I'm halfway hoping that I don't know what I'm talking about.
Glad to help :)
It's nice that they have an env tool, but why didn't they just use the existing virtualenv?
Why doesn't anaconda's env work for you?
Conda manages more than just Python packages, but other dependencies as well. For example, here's list of packages in a new environment I created with
$ conda create -n hn python
$ source activate hn
$ conda list -c
openssl-1.0.2g-0
pip-8.1.1-py35_0
python-3.5.1-0
readline-6.2-2
setuptools-20.3-py35_0
sqlite-3.9.2-0
tk-8.5.18-0
wheel-0.29.0-py35_0
xz-5.0.5-1
zlib-1.2.8-0
setuptools and wheel are the only Python packages installed. The others are non-Python packages that conda is managing for my environment.For all the talk of vendoring in package manager tools these days, I really, really like the way conda manages this stuff.