我的工作谁关于Python的各种版本运行几个Python项目。我希望能设置我的VIM环境中使用ropevim,pyflakes和pylint的,但我已经遇到因使用单一的VIM(编译为Python的特定版本不匹配项目的Python版本)的一些问题。
我希望能打造VIM到每一个我的virtualenv目录,但我碰到的一个问题,我无法得到它的工作。当我尝试从源代码编译VIM,尽管我的virtualenv指定Python的config文件夹中,全系统的Python解释器总是使用。
目前,我的Python 2.6.2,并与每个版本创建了几个virtualenvs安装了Python 2.7.1。我使用Ubuntu 10.04在系统默认的Python 2.6.5是。我每次编译vim和调用:python import sys; print(sys.version)
返回Python 2.6.5
。
configure --prefix=/virtualenv/project --enable-pythoninterp=yes --with-python-config-dir=/virtualenv/project/lib/python2.6/config
结果在的config.log如下:
...
configure:5151: checking --enable-pythoninterp argument
configure:5160: result: yes
configure:5165: checking for python
configure:5195: result: /usr/bin/python
...
它应该是/virtualenv/project/bin/python
。有什么办法来指定Python解释器的vim更好地使用?
注:我可以证实,/ virtualenv中/工程/斌出现在PATH
环境变量的前面。
我建议建立VIM对2名口译,然后用我下面提供的shell脚本,它指向一个特定的virtualenv调用它。
我可以使用下面的命令(2.7下的$ HOME /根装)进行建设的Python 2.7 VIM:
% LD_LIBRARY_PATH=$HOME/root/lib PATH=$HOME/root/bin:$PATH \
./configure --enable-pythoninterp \
--with-python-config-dir=$HOME/root/lib/python2.7/config \
--prefix=$HOME/vim27
% make install
% $HOME/bin/vim27
:python import sys; print sys.path[:2]
['/home/pat/root/lib/python27.zip', '/home/pat/root/lib/python2.7']
你的virtualenv实际上是围绕它创建时使用Python解释器的一个瘦包装 - $HOME/foobar/lib/python2.6/config
是/usr/lib/python2.6/config
一个符号链接。
所以,如果你用系统解释创建它,VIM将探测这个最终对现实的解释链接,使用系统默认sys.path
,即使配置将显示的virtualenv的路径:
% PATH=$HOME/foobar/bin:$PATH ./configure --enable-pythoninterp \
--with-python-config-dir=$HOME/foobar/lib/python2.6/config \
--prefix=$HOME/foobar
..
checking for python... /home/pat/foobar/bin/python
checking Python's configuration directory... (cached) /home/pat/foobar/lib/python2.6/config
..
% make install
% $HOME/foobar/bin/vim
:python import sys; print sys.path[:1]
['/usr/lib/python2.6']
解决方法:如果您的系统Vim是对你的系统蟒蛇最有可能的编译,你并不需要重建VIM每个的virtualenv:你能把你的virtualenv的bin目录中名为vim
一个shell脚本,调用系统之前扩展PYTHONPATH VIM:
~/HOME/foobar/bin/vim
的内容:
#!/bin/sh
ROOT=`cd \`dirname $0\`; cd ..; pwd`
PYTHONPATH=$ROOT/lib/python2.6/site-packages /usr/bin/vim $*
当被调用时,virtualenv中的sys.path中插入:
% $HOME/foobar/bin/vim
:python import sys; print sys.path[:2]
['/home/pat/foobar/lib/python2.6/site-packages', '/usr/lib/python2.6']
对于它的价值,并且似乎没有人在这里回答这个问题,我不得不使用如下命令行一些运气:
vi_cv_path_python=/usr/bin/python26 ./configure --includedir=/usr/include/python2.6/ --prefix=/home/bcrowder/local --with-features=huge --enable-rubyinterp --enable-pythoninterp --disable-selinux --with-python-config-dir=/usr/lib64/python2.6/config
我想给类似的解决方案,以克劳德的作品非常适合我的。
假设你有Python的安装/opt/Python-2.7.5和该文件夹的结构
$ tree -d -L 1 /opt/Python-2.7.5/
/opt/Python-2.7.5/
├── bin
├── include
├── lib
└── share
你想建立VIM与Python版本。所有你需要做的是
$ vi_cv_path_python=/opt/Python-2.7.5/bin/python ./configure --enable-pythoninterp --prefix=/SOME/FOLDER
因此,仅仅通过明确赋予vi_cv_path_python
变量configure
脚本将演绎出它自己的(即使是配置-DIR)的一切。
这是在VIM 7.4+和最近与vim-7-4-324
测试多次。
我跟我的系统在3个不同版本的Python的同样的问题。
对我来说,最简单的事情是改变我$PATH
环境变量,使得有蟒蛇,我想是(在我的情况/usr/local/bin
)的版本的文件夹之前被发现的另一个。
在我的编译vim80,系统蟒蛇是2.6,我有另一个Python 2.7在〜/ local / bin中,我发现,使编制工作: