Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

add2virtualenv (virtualenv wrapper) does not work with scipy

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?

like image 216
Okke Avatar asked May 09 '12 15:05

Okke


1 Answers

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.

like image 193
3 revs Avatar answered Sep 23 '22 01:09

3 revs