I want to create a virtualenv without global python packages, but with the scipy distribution that is shared; installing scipy takes quite a while and I don't want to go through the motions too often.
So I run add2virtualenv /Library/Python/2.7/site-packages/scipy
and after running add2virtualenv it shows the directory is added. (I doublechecked, it is the right directory).
Then I issue workon myfile
to be sure the working directories are reloaded.
However, when I try to load scipy, it is an ImportError: No module named scipy
. This is unexpected.
Has anyone used a global scipy in a non-global-sitepackages virtualenv?
So, to summarize, the actual problem here is that the directory including the packages to be imported must be used, instead of the specific package. That is, instead of
add2virtualenv /Library/Python/2.7/site-packages/scipy
It should be
add2virtualenv /Library/Python/2.7/site-packages
Beware: this solution has the drawback that you do not only include scipy, but any other packages in /Library/Python/2.7/site-packages
.
An alternate, space-efficent solution could be symlinking scipy directory inside the virtual env's site-package. This can be done, in your virtual env, through:
cdsitepackages
ln -s /Library/Python/2.7/site-packages/scipy scipy
All credits go to @rubik (see the comments)
Check out this answer to find your site-packages path in case it is different than the one used here.