编译VIM与谁有关Python的各种版本运行几个Python项目的Python
我工作的具体版本。我希望设置我的vim环境来使用ropevim,pyflakes和pylint,但是我遇到了一些由于使用单个vim而导致的问题(针对与项目的Python版本不匹配的特定版本的Python编译) 。编译VIM与谁有关Python的各种版本运行几个Python项目的Python
我希望能打造VIM到每一个我的virtualenv目录,但我碰到的一个问题,我无法得到它的工作。当我尝试从源代码构建vim时,尽管在我的virtualenv中指定了Python配置文件夹,但总是使用系统范围的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
。有什么方法可以指定vim使用的Python解释器吗?
注:我可以证实,/ 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']
我是有我的系统上3个不同版本的Python的同样的问题。
对我来说,最简单的事情就是改变我的$PATH
env变量,这样具有我想要的python版本的文件夹(在我的情况下是/usr/local/bin
)在另一个之前被发现。
单独设置$ PATH不适用于我,我不得不直接使用我在我的答案中列出的vi_cv_path_python调用来直接配置。 – crowder 2014-05-14 18:16:38
对于它的价值,并且似乎没有人在这里回答这个问题,我不得不使用如下命令行一些运气:
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
上测试过。
谢谢。您的回复帮助我使用python的自定义/专有安装来编译vim。 – 2017-05-22 06:18:07
在我的编译vim80,系统蟒蛇是2.6,我有另一个Python 2.7在〜/ local/bin中,我发现,使编制工作:
- 更新$ PATH把我的蟒蛇路径前进
- 添加软链接,LN -s蟒蛇python2(该配置文件会尝试通过探测python2找到蟒蛇配置)重新-R之前
- 使distclean命令取消./configure以确保没有选取缓存的错误值。
我提到我使用多个版本的Python,但我可能应该在原始问题中详细阐述一下。系统Python不是我创建virtualenvs的Python。实际上,我使用Python 2.6.2和Python 2.7.1的virtualenvs,但每次编译vim时,使用的Python解释器都是/ usr/bin/python(Ubuntu 10.04上的Python 2.6.5) – brildum 2011-05-03 17:52:35
您的其他Python版本的安装位置,例如符号链接'/ virtualenv/project/lib/python2.6/config'指向哪里? – samplebias 2011-05-03 18:36:06
事实证明,即使我调用configure时激活了我的virtualenv(因此,当我添加PATH =/virtualenv/project时,'echo $ PATH''会输出''/ virtualenv/project:...''' :$ PATH ...''到命令开始,我能够得到它的工作。感谢您的帮助。 – brildum 2011-05-03 18:41:32