问题
I wrote a script using andaconda2 python2.7, and wxpython, matplotlib, skimage, numpy. After using pyinstaller to generate an executable files. the total size is almost 700 mb. it feels too large. Someone said because numpy uses MKL which is very large ~ 400 mb as I saw in folder. so I wonder how to create an environment using numpy nomkl? Or if anyone has experience to reduce the size of executable files using pyinstaller, please let me know. BTW, I tried py2exe. it creates a much smaller folder, but somehow the exe doesn't work.
Thanks!
回答1:
I think the canonical way would be:
conda create -n new_env nomkl numpy scipy ...
But depending on your OS, it might be possible that there is no nomkl distribution available (windows?).
Example-quote from here:
On Windows, we have always been linking against MKL. However, with the Anaconda 2.5 release we separated the MKL runtime into its own conda package, in order to things uniformly on all platforms.
Some more relevant discussion might be this
Edit: official blog-post pointing out: the nomkl package is not available on Windows (2/2016)
Edit 2: And even Gohlke nowadays only provide MKL-based windows-binaries.
Edit 3: So if all you need is a numpy-distribution without MKL, you can use these official wheels which are linked against OpenBLAS instead of MKL.
In general you can create a new env:
conda create -n wheel_based python
activate wheel
pip install numpy-1.13.3-cp36-none-win_amd64.whl # or whatever the file is named
There are two problems still:
- which anaconda-builds will work with non-MKL numpy
- will anaconda (probably because of point 1) try to overwrite this numpy-install?
There is some discussion here.
It might be advisable to not use anaconda for this very specific use-case if you are able to install your remaining dependencies. Scipy (usually the most pain) now has windows-builds (1.0 beta).
来源:https://stackoverflow.com/questions/46656367/how-to-create-an-environment-in-anaconda-with-numpy-nomkl