Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

virtualenv using incorrect sys.path

Things were working fine a moment ago. I have no idea what I did to piss off virtualenv, but it's acting very strangely now. Any help is appreciated.

When making a virtualenv, I use this command:

virtualenv -p /usr/bin/python3 venv

Now I see that the packages I install using pip install package are not being loaded by python. They are installed correctly by pip, into the venv/lib/python3.4/site-packages directory, however the python in my virtualenv is not looking through that directory for packages.

in Python:

import sys
sys.path
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']

This is wrong! It's using the wrong paths, and it should at least include

/myhomedir/venv/lib/python3.4/site-packages

So I can import my packages.

In fact, in Python opened in a virtualenv:

import sys
sys.path.append("/myhomedir/venv/lib/python3.4/site-packages")
import package

works!!

But I don't want to have to manually append this path every time I use Python. I did something to make sys.path very angry, and I don't know what that is.

I just sudo apt-get updated and sudo apt-get upgraded to make sure it wasn't a conflict... no dice.

Possibly related:

I've noticed that my virtualenv command outputs the following line:

Using base prefix '/usr'

I don't recall this happening before. However even when I do virtualenv venv, (without specifying Python version, and that output does not appear) my sys.path is still wrong and packages don't load.

Anyone thoughts? Help is greatly appreciated.

like image 928
Tom A Avatar asked Apr 09 '15 02:04

Tom A


People also ask

How do I add a path to Pythonpath in Virtualenv?

Just put a file with a . pth extension (any basename works) in your virtualenv's site-packages folder, e.g. lib\python2. 7\site-packages , with the absolute path to the directory containing your package as its only contents.


1 Answers

Solved the problem... posting result if anyone else has the same issue. A PICNIC error of the highest degree.

In my .bashrc file, I had an alias python=/usr/bin/python3

Well when my virtualenv tried to execute python, it was re-routing to /usr/bin instead of using it's internal python.

like image 172
Tom A Avatar answered Oct 14 '22 05:10

Tom A