我正在研究几个在不同版本的Python上运行的Python项目.我希望设置我的vim环境以使用ropevim,pyflakes和pylint,但是我遇到了一些问题,这些问题是由于使用单个vim(为特定版本的Python编译而与项目的Python版本不匹配) .
我希望将vim构建到我的每个virtualenv目录中,但我遇到了一个问题,我无法让它工作.当我尝试从源代码构建vim时,尽管在virtualenv中指定了Python配置文件夹,但总是使用系统范围的Python解释器.
目前,我安装了Python 2.6.2和Python 2.7.1,并且每个版本都创建了几个virtualenv.我正在使用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
...
Run Code Online (Sandbox Code Playgroud)
它应该是/virtualenv/project/bin/python
.有没有办法为vim指定Python解释器?
注意:我可以确认/ virtualenv/project/bin出现在PATH
环境变量的前面.
sam*_*ias 13
我建议对2个解释器构建vim,然后使用我在下面提供的shell脚本调用它来指向特定的virtualenv.
我能够使用以下命令在Python 2.7上构建vim(2.7安装在$ HOME/root下):
% 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']
Run Code Online (Sandbox Code Playgroud)
你的virtualenv实际上是一个围绕它创建的Python解释器的瘦包装 - $HOME/foobar/lib/python2.6/config
是一个符号链接/usr/lib/python2.6/config
.
因此,如果您使用系统解释器创建它,VIM将对此进行探测并最终链接到真正的解释器,sys.path
默认情况下使用系统,即使configure将显示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']
Run Code Online (Sandbox Code Playgroud)
解决方法:由于您的系统vim很可能是针对您的系统python编译的,因此您不需要为每个virtualenv重建vim:您可以删除vim
在virtualenv的bin目录中命名的shell脚本,该目录在调用system vim之前扩展PYTHONPATH :
内容~/HOME/foobar/bin/vim
:
#!/bin/sh
ROOT=`cd \`dirname $0\`; cd ..; pwd`
PYTHONPATH=$ROOT/lib/python2.6/site-packages /usr/bin/vim $*
Run Code Online (Sandbox Code Playgroud)
调用它时,将插入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']
Run Code Online (Sandbox Code Playgroud)
cro*_*der 11
对于它的价值,似乎没有人在这里回答这个问题,我运气时使用如下命令行:
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
Run Code Online (Sandbox Code Playgroud)
小智 5
我想给出一个类似的解决方案,对我来说效果很好.
想象一下,你在/opt/Python-2.7.5中安装了Python,并且该文件夹的结构是
$ tree -d -L 1 /opt/Python-2.7.5/
/opt/Python-2.7.5/
??? bin
??? include
??? lib
??? share
Run Code Online (Sandbox Code Playgroud)
并且您希望使用该版本的Python构建vim.你需要做的就是
$ vi_cv_path_python=/opt/Python-2.7.5/bin/python ./configure --enable-pythoninterp --prefix=/SOME/FOLDER
Run Code Online (Sandbox Code Playgroud)
因此,只要明确地给脚本赋予vi_cv_path_python
变量就configure
可以推断出它自己的一切(甚至是config-dir).
这在vim 7.4+上进行了多次测试,最近在vim-7-4-324
.
归档时间: |
|
查看次数: |
14718 次 |
最近记录: |