vim使用错误的python版本编译(并且不使用所需的版本) 简言之:
我在使用首选python版本编译vim时遇到问题。vim使用错误的python版本编译(并且不使用所需的版本) 简言之:,python,macos,vim,compilation,Python,Macos,Vim,Compilation,我在使用首选python版本编译vim时遇到问题。 当我使用--enable pythoninterp时,它使用系统OSX python版本编译。 当我使用--enable pythoninterp=dynamic时,在尝试:py import sys 以下是我所做的更详细的工作: %git克隆https://github.com/b4winckler/macvim.git %cd macvim %./configure——启用pythoninterp\ --对于python config di
当我使用
--enable pythoninterp
时,它使用系统OSX python版本编译。当我使用
--enable pythoninterp=dynamic
时,在尝试:py import sys
以下是我所做的更详细的工作:
%git克隆https://github.com/b4winckler/macvim.git
%cd macvim
%./configure——启用pythoninterp\
--对于python config dir=/usr/local/lib/python2.7/config来说,问题的根源似乎在于python正在寻找错误的目录。在担心集成到vim之前,这应该是您希望纠正的第一部分。所有Mac电脑的机器上都安装了Python版本,位于/usr/local/bin/Python中。通常,当您得到这台机器时,您需要安装一个更新版本的Python。新版本应位于:
% which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
我不知道您是如何开始安装Python的,但最简单的方法是easy_install或pip。这是一个很好的例子。如果这不能解决你的路径问题,那么你应该这样做。希望这就是您所需要的,vim的问题将得到解决。我遇到了与您相同的问题(试图用Python 2.7编译MacVim),我最终成功地做到了这一点
首先,动态
选项不起作用!我在网上也看到过这个技巧,但是如果你看一下配置脚本(或者仅仅是帮助),它是无法识别的。因此,不要使用它。这相当于禁用python,这解释了为什么:py不起作用。您还没有使用Python编译MacVim
最后,我使用Python上的官方安装程序重新安装了Python 2.7.2。
然后在/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/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,并尝试使用macports中的python 2.7版:
/opt/local/bin/python
未找到某些模块,例如操作系统模块。原因是PYTHONPATH变量insidemacvim是错误的
要进行测试,请打开macvim并键入:
:python print sys.path
我得到了以下路径(注意结尾,这是胡说八道):
我认为原因在于链接器标志“-frameworkpython”。这是错误的,即系统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"
如果测试“x$MACOSX”=“xyes”&${vi_cv_path_python}-c\
“导入sys;sys.exit(${vi_cv_var_python_version}<2.3)”;然后
vi_cv_path_python_plibs=“-framework python”
到
如果测试“x$MACOSX”=“xyes”&${vi_cv_path_python}-c\
“导入sys;sys.exit(${vi_cv_var_python_version}<2.3)”;然后
vi_cv_path_python_plibs=“-F/opt/local/Library/Frameworks-framework python”
再次运行配置,在清除后,
Macvim按照预期编译和工作。-F标志告诉链接器在哪个目录中查找以下框架。Macports将Python.framework安装在这个目录YMMV中。我发现上面的答案很危险——在关闭macvim中的缓冲区时导致了致命错误
这里找到的答案要稳定得多:
我只是有着完全相同的愿望,并且实现了它,没有额外的麻烦:
$ port info macvim
MacVim @7.3.snapshot66, Revision 2 (editors)
Variants: big, cscope, [+]huge, perl, python, python25, python26, python27, python31, python32, python33, ruby, ruby19, tcl, universal, xim
...
$ sudo port install macvim +python27
---> Computing dependencies for MacVim
---> Fetching archive for MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://packages.macports.org/MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/MacVim
---> Fetching distfiles for MacVim
---> Verifying checksum(s) for MacVim
---> Extracting MacVim
---> Applying patches to MacVim
---> Configuring MacVim
---> Building MacVim
---> Staging MacVim into destroot
---> Installing MacVim @7.3.snapshot66_2+huge+python27
---> Deactivating MacVim @7.3.snapshot66_2+huge
---> Cleaning MacVim
---> Activating MacVim @7.3.snapshot66_2+huge+python27
---> Cleaning MacVim
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.
注意:正如您在上面所看到的(停用
),我首先尝试了默认的(预编译的)MacVim(即sudo端口安装MacVim
->MacVim@7.3.snapshot66_2+巨型
),它没有编译Python支持
添加+python27
变量后,运行:py import sys;在新安装的MacVim中打印(sys.version,sys.executable)
现在返回:
('2.7.3 (default, Oct 22 2012, 06:12:28) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]', '/Applications/MacPorts/MacVim.app/Contents/MacOS/Vim')
这恰好与我的shell中的相同(取决于您的$PATH
和端口选择python
):
确保正确的“python”在$PATH中,这在使用“sudo”时可能不是这样
有一个选项可以设置要使用的python二进制文件(如果无法修改$PATH):
但是,使用enable pythoninterp=dynamic
时,在运行“:python import sys”时未能加载libpython2.7.a,表示“E448:无法加载库函数_PyArg_Parse_SizeT”。我的解决方案是删除配置缓存文件,该文件是从以前使用OSX附带的python构建的地方创建的
然后我用自制软件安装了一个新的python版本,但无法获取。配置以获取新的python版本,即使我更新了PATH变量,并且哪个python显示了正确的python版本
删除缓存文件并再次运行配置解决了我的问题
rm src/auto/config.cache
./configure --enable-pythoninterp
也许它对任何人都有帮助。我找到的解决此问题的方法是删除源代码并重新获取它。我确信hg有办法删除本地更改,但我在帮助文件中找不到它。
我没有使用MacVim,但我怀疑您的问题也是出于同样的原因
通过查看配置脚本的输出,它似乎缓存了以前使用的python安装,并且只使用了它 谢谢你的评论。我已经从源代码安装了python。那么,我现在可以使用pip重新安装已经安装的python吗?或者我应该先卸载现有的python吗?当然,卸载后重新安装总是比较干净的。我建议你做我喜欢的事
:python print sys.path
...
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.5/'
...
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"
$ port info macvim
MacVim @7.3.snapshot66, Revision 2 (editors)
Variants: big, cscope, [+]huge, perl, python, python25, python26, python27, python31, python32, python33, ruby, ruby19, tcl, universal, xim
...
$ sudo port install macvim +python27
---> Computing dependencies for MacVim
---> Fetching archive for MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://packages.macports.org/MacVim
---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/MacVim
---> Fetching distfiles for MacVim
---> Verifying checksum(s) for MacVim
---> Extracting MacVim
---> Applying patches to MacVim
---> Configuring MacVim
---> Building MacVim
---> Staging MacVim into destroot
---> Installing MacVim @7.3.snapshot66_2+huge+python27
---> Deactivating MacVim @7.3.snapshot66_2+huge
---> Cleaning MacVim
---> Activating MacVim @7.3.snapshot66_2+huge+python27
---> Cleaning MacVim
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.
('2.7.3 (default, Oct 22 2012, 06:12:28) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]', '/Applications/MacPorts/MacVim.app/Contents/MacOS/Vim')
$ which python
/opt/local/bin/python
$ python
Python 2.7.3 (default, Oct 22 2012, 06:12:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
...
export vi_cv_path_python=/usr/local/bin/python
rm src/auto/config.cache
./configure --enable-pythoninterp