Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim with python support enviromental variables

If i type in the vim command line

:python import os;print os.getenv('PYTHONPATH')

I get a path If i close vim and on the same terminal do

echo $PYTHONPATH

I get another completly different path Why is this, where is vim getting this path? This is relevant because the autocompletion can't find the modules thus it doesnt work. I know this because if i try, again from the vim cli

:python import django

It fails But if i exit vim and type

python
>>> import django

No errors are shown! Whats going on here? I'm using virtualenv and i checked the activate source and is not changing the PYTHONPATH. I tried this without virtualenv, same problem.

Update: The line i used to configure the Vim source prior to compiling it

./configure --prefix=${HOME}/apps/vim73 --with-features=huge --enable-gui=gnome2 --enable-pythoninterp --enable-rubyinterp --enable-multibyte --with-python-config-dir=/usr/lib/python2.6/config

like image 953
Guillermo Siliceo Trueba Avatar asked Sep 21 '11 03:09

Guillermo Siliceo Trueba


1 Answers

PYTHONPATH is a red herring: that's not what the virtualenv uses to configure itself. The virtualenv works by adding a prefix to PATH that points to the location of an alternate python executable, overriding the system python.

The problem with Vim is that the Python embedding does not look at the Python executable or PATH: it looks for and loads the libpython library, which virtualenv does not virtualize. This means that Vim will always initialize the system Python, regardless of any virtualenv.

However, all is not lost: Vim can still run the virtualenv's initialization script after its own Python initialization. Jeremy Cantrell wrote a Vim plugin to help automate this, which should solve your problem:

  • https://github.com/jmcantrell/vim-virtualenv
like image 164
Pi Delport Avatar answered Oct 19 '22 08:10

Pi Delport