vim компилируется с неправильной версией python (и не работает с необходимой версией)

Вкратце:

У меня проблема с компиляцией vim с предпочтительной версией python.
Когда я использую --enable-pythoninterp он компилируется с версией python на системной OSX.
Когда я использую --enable-pythoninterp=dynamic я получаю ошибку в vim при попытке :py import sys

Вот что я делал более подробно:

 % 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 введите:

  • Как скомпилировать пакет Python в dll
  • Зачем компилировать код Python?
  • Vim не скомпилируется с python на OS X
  • Есть ли способ узнать, с какой версией Python был скомпилирован файл .pyc?
  • Создание Python с поддержкой SSL в нестандартном месте
  • Можно ли скомпилировать программу, написанную на Python?
  •  :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') 

    Почему 2.6.1 ?
    Почему /usr/bin/python ?
    Мой питон по умолчанию – 2,7! И он живет в /usr/local/bin/python
    Я искал решение весь день. И я нашел его. Это = динамический атрибут (но это решение не объяснило).

    После этого я попытался перекомпилировать vim с динамическим python:

     % ./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?


    update : У меня больше нет среды, описанной в вопросе. Поэтому я не смог проверить новые ответы. Но оставшаяся часть человечества по достоинству оценят вашу помощь.

  • from scrapy.selector import selector error
  • Приложение, построенное с использованием несистемного Python с использованием py2app в pyenv, не работает на других машинах
  • Не удается установить библиотеку mysql python на Mac Mavericks
  • Создание Python с поддержкой SSL в нестандартном месте
  • Как управлять мышью на Mac с помощью Python?
  • Можно получить доступ к сайтам AppEngine SDK через локальный ip-адрес, когда localhost работает нормально и MacOSX
  • 8 Solutions collect form web for “vim компилируется с неправильной версией python (и не работает с необходимой версией)”

    У меня такая же проблема. Я скомпилировал Macvim из источника и попытался использовать python версии 2.7 из macports в:

     /opt/local/bin/python 

    Некоторые модули не найдены, например, модуль os. Причиной этого было то, что переменная PYTHONPATH внутри macvim ошибочна!

    Чтобы проверить, откройте macvim и введите:

     :python print sys.path 

    Я получил следующие пути (обратите внимание на окончание, что является бессмыслицей):

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

    Я полагаю, причина в флагом компоновщика «-framework Python». Это подбирает неправильное, то есть систему python framework. Если я изменю строку в скрипте 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 снова, после очистки, Macvim компилируется и работает, как ожидалось. Флаг -F сообщает компоновщику, в котором каталог находит следующую структуру. Macports устанавливает Python.framework в этом каталоге, YMMV.

    У меня была такая же проблема, как и вы (попытка скомпилировать MacVim с Python 2.7), и я, наконец, смог это сделать.

    Сначала dynamic параметр не работает ! Я тоже видел этот совет в сети, но если вы посмотрите на скрипт configure (или просто на помощь), он не будет распознан. Поэтому не используйте его . Это эквивалентно отключению python, которые объясняют, почему: py не работает. Вы не скомпилировали MacVim с Python.

    То, что я сделал в конце, было переустановкой Python 2.7.2 с использованием официального установщика на веб-сайте Python. Затем вы должны иметь config в /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 

    Это дало мне ошибку в конце компиляции, но если я игнорирую ее и запускаю двоичный файл, все равно это работает. Эта проблема может быть специфична для моего компьютера (похоже, это связано с установкой значка ). Удачи.

    Обратите внимание, что мне удалось скомпилировать MacVim с Python 2.7 (что было моей целью) не обязательно для того, чтобы скомпилировать его с моей версией Python во время выполнения.

    Убедитесь, что правильный «python» находится в вашей $ PATH, что может быть не так, если вы используете «sudo».

    Существует возможность установить бинарный файл python для использования (если вы не можете изменить $ PATH):

     export vi_cv_path_python=/usr/local/bin/python 

    Но все же, с enable-pythoninterp=dynamic не удалось загрузить libpython2.7.a при запуске «: python import sys», говоря «E448: Не удалось загрузить библиотечную функцию _PyArg_Parse_SizeT».

    Мое решение состояло в том, чтобы удалить файл кеша конфигурации, который был создан из предыдущего построенного, где я использовал питон, который поставлялся с OSX.

    Затем я установил новую версию python с homebrew и не смог получить .configure, чтобы взять новую версию python, хотя я обновил свою переменную PATH и какой python показал правильную версию python.

    Удаление файла кеша и запуск configure снова решили мою проблему.

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

    Может быть, это помогает кому угодно.

    Похоже, что корень вашей проблемы кроется в том, что 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 будет решена.

    Я обнаружил, что вышеупомянутый ответ опасен – вызвал фатальные ошибки при закрытии буферов в macvim.

    Ответ, найденный здесь, намного более стабилен: Vim не скомпилируется с python на OS X

    У меня просто было то же самое желание, и MacPorts выполнили его без дополнительной игры:

     $ 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. 

    Примечание. Как вы можете видеть выше ( deactivating ), я сначала попробовал сначала (предварительно скомпилированный) MacVim (т. sudo port install macvim -> MacVim @7.3.snapshot66_2+huge ), и у него не было поддержки Python, скомпилированной в ,

    После добавления варианта +python27 выполняется :py import sys; print (sys.version, sys.executable) :py import sys; print (sys.version, sys.executable) внутри недавно установленного MacVim теперь возвращает:

     ('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') 

    который оказался таким же, как у меня в моей оболочке (в зависимости от вашего $PATH и $PATH port select python ):

     $ 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 ... 

    Исправление, которое я нашел для этой проблемы, связано с удалением источника и его повторной загрузкой. Я уверен, что hg имеет возможность просто удалять локальные изменения, но я не смог найти его в файле справки. Я не использовал MacVim, но я подозреваю, что ваша проблема по той же причине.

    Просматривая вывод скрипта конфигурации, кажется, что он кэширует установленную ранее установку python и просто использует это.

    Python - лучший язык программирования в мире.