vim使用错误的python版本编译(并且不使用所需的版本)

2024-05-13 16:55:39 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之:

我在用首选python版本编译vim时遇到问题。
当我使用--enable-pythoninterp时,它与系统OSX python版本一起编译。
当我使用--enable-pythoninterp=dynamic时,我在尝试:py import sys时在vim中得到一个错误

下面是我正在做的更详细的事情:

% git clone https://github.com/b4winckler/macvim.git
% cd macvim
% ./configure --enable-pythoninterp \
     --with-python-config-dir=/usr/local/lib/python2.7/config <- this option has no affects on result
...
checking for python... /usr/local/bin/python
checking Python version... 2.7
checking Python is 1.4 or better... yep
checking Python's install prefix... /usr/local
checking Python's execution prefix... /usr/local
checking Python's configuration directory... /usr/local/lib/python2.7/config
...
% make
...
** BUILD SUCCEEDED **
% open src/MacVim/build/Release/MacVim.app

在打开的MacVim I中键入:

:py import sys; print (sys.version, sys.executable)
('2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
  [GCC 4.2.1 (Apple Inc. build 5646)]',
 '/usr/bin/python')

为什么{}?
为什么/usr/bin/python
我的默认python是2.7!它生活在/usr/local/bin/python
我整天都在寻找解决办法。我找到了。它是=dynamic属性(但是这个解决方案没有解释)。

之后,我尝试用动态python重新编译vim:

% ./configure --enable-pythoninterp=dynamic
... output the same ...
% make
% open src/MacVim/build/Release/MacVim.app

在打开的MacVim中:

:py import sys

出现错误:

E370: Could not load library libpython2.7.a
E263: Sorry, this command is disabled, the Python library could not be loaded.

我的OSX版本是10.6.8。
默认的python版本是2.7。

% which python
/usr/local/bin/python

有谁能解释一下在编译期间python是如何集成到vim中的?
如何用libpython2.7.a修复错误?


更新:我不再拥有问题中描述的环境。所以我无法测试新答案。但人类的剩余部分将感谢你的帮助。


Tags: pyimport版本configbinenableusrlocal
3条回答

我的解决方案是删除配置缓存文件,该文件是从我使用OSX附带的python的先前构建中创建的。

然后,我用自制程序安装了一个新的python版本,但无法获取。请配置为使用新的python版本,即使我更新了路径变量,并且哪个python显示了正确的python版本。

删除缓存文件并再次运行configure解决了我的问题。

rm src/auto/config.cache
./configure --enable-pythoninterp

也许这对任何人都有帮助。

我也有同样的问题。我从源代码处编译了Macvim,并尝试使用macports中的python版本2.7:

/opt/local/bin/python

找不到某些模块,例如操作系统模块。原因是PYTHONPATH变量在macvim中是错误的!

要测试,请打开macvim并键入:

:python print sys.path

我得到了以下路径(注意结尾,这是胡说八道):

...
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.5/'
...

我认为原因是链接器标志“-framework Python”。这就搞错了,即系统python框架。如果我将src/auto/configure脚本中的行更改为:

if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
      vi_cv_path_python_plibs="-framework Python"

if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
      vi_cv_path_python_plibs="-F/opt/local/Library/Frameworks -framework Python"

再次运行configure,在make clean之后, Macvim按预期编译和工作。F标志告诉链接器在哪个目录中查找以下框架。Macports在此目录YMMV中安装Python.framework。

我遇到了和你一样的问题(试图用Python2.7编译MacVim),我终于成功地做到了。

首先,dynamic选项不起作用!我在网上也看到过提示,但如果您查看配置脚本(或只是帮助),则无法识别它。因此,不要使用它。这相当于禁用python,这解释了为什么:py不工作。你还没有用Python编译MacVim。

最后我所做的是使用Pythonwebsite上的官方安装程序重新安装Python 2.7.2。 然后应该在/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config中有一个config

尝试使用以下选项重新编译

% ./configure --enable-pythoninterp \
   --with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/python2.7/config

这在编译结束时给了我一个错误,但是如果我忽略它并启动二进制文件,不管怎样都可以。这个问题可能是我的电脑特有的(它似乎与图标安装有关)。 祝你好运。

注意,这是我用Python 2.7(这是我的目标)编译MacVim的方法,不一定是用Python的运行时版本编译MacVim的方法。

相关问题 更多 >