Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim使用错误的python版本编译(并且不使用所需的版本) 简言之:_Python_Macos_Vim_Compilation - Fatal编程技术网

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

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

我在使用首选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 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