Why does sys.path
contain /usr/...
before directories from my virtualenv?
I create the virtualenv with --system-site-packages
The sys.path
looks like this at the moment:
/home/my-virtualenv/src/foo
/usr/lib/python2.7/site-packages <--- /usr paths should be below
/usr/lib64/python2.7/site-packages
/home/my-virtualenv/lib/python27.zip
/home/my-virtualenv/lib64/python2.7
/home/my-virtualenv/lib64/python2.7/plat-linux2
/home/my-virtualenv/lib64/python2.7/lib-tk
/home/my-virtualenv/lib64/python2.7/lib-old
/home/my-virtualenv/lib64/python2.7/lib-dynload
/usr/lib64/python2.7
/usr/lib/python2.7
/usr/lib64/python2.7/lib-tk
/home/my-virtualenv/lib/python2.7/site-packages
I want all paths outside my virtualenv (/usr...
) to be below the paths of the virtualenv.
Otherwise crazy things happen: I install a package with pip. Pip tells me that the new version is installed (pip freeze | grep -i ...
) but the import does use the one from /usr/lib/python2.7/site-packages
I can't use --no-site-packages
in my context.
Is there a way to sort sys.path
?
Why I use system-site-packages
There seems to be no straight forward way to make single libraries from the global site-packages available in the virtualenv. See this question: make some modules from global site-packages available in virtualenv
There are packages like python-gtk which are very hard to install in a virtualenv.