Как мне использовать Python 3.1.2 в Textmate? - PullRequest
1 голос
/ 27 августа 2010

TextMate 1.5.9, похоже, использует Python 2.6.1. Как настроить его на использование 3.1? Я уже установил пакет 3.1 и могу использовать IDLE для интерактивных сессий, но сейчас я хочу использовать TextMate. Я уже видел пост, который указывает вам определить переменную проекта (TM_PYTHON: путь интерпретатора). Я попробовал это, но когда я использую Cmd + r для запуска скрипта в Textmate, я все еще вижу Python 2.6.1 в качестве номера версии (вверху / справа). Даже Терминал использует 2.7!

Помощь!

Ответы [ 2 ]

1 голос
/ 06 ноября 2010
#! /usr/bin/python

Уберите этот нормальный удар из вашего скрипта, затем запустите его, и вы увидите версию 3 в окне textmates.Shebang по умолчанию переопределяет переменную и возвращает вас к версии 2.6.1 osx по умолчанию.Это все немного странно ....

1 голос
/ 27 августа 2010

Я полагаю, вы ссылаетесь на это сообщение . Это должно работать, но убедитесь, что вы используете правильный путь к Python 3.1, который вы установили. Проверить с помощью:

$ which python3
/usr/local/bin/python3

Если вы использовали установщик python.org 3.1, он должен быть доступен на /usr/local/bin/python3. Другие методы могут отличаться, например, MacPorts python3.1 будет обычно на /opt/local/bin/python3.

ОБНОВЛЕНИЕ: Поскольку вы указываете, что это все еще не работает для вас, я предполагаю, что мы используем разные версии пакета Python TextMate. Используя редактор пакетов TextMate (пункт меню Bundles -> Bundle Editor -> Show Bundle Editor), затем выбирая команду Run Script пакета Python, я вижу следующий фрагмент команды:

#!/usr/bin/env ruby
require ENV["TM_SUPPORT_PATH"] + "/lib/tm/executor"
require ENV["TM_SUPPORT_PATH"] + "/lib/tm/save_current_document"

TextMate.save_current_document
TextMate::Executor.make_project_master_current_document

ENV["PYTHONPATH"] = ENV["TM_BUNDLE_SUPPORT"] + (ENV.has_key?("PYTHONPATH") ? ":" + ENV["PYTHONPATH"] : "")

is_test_script = ENV["TM_FILEPATH"] =~ /(?:\b|_)(?:test)(?:\b|_)/ or
                 File.read(ENV["TM_FILEPATH"]) =~ /\bimport\b.+(?:unittest)/

TextMate::Executor.run(ENV["TM_PYTHON"] || "python", "-u", ENV["TM_FILEPATH"]) do |str, type|
  if is_test_script and type == :err
    if str =~ /\A[\.F]*\Z/
      str.gsub!(/(\.|F)/, "<span class=\"test ok\">\\1</span>")
      str + "<br/>\n"
    elsif str =~ /\A(FAILED.*)\Z/
      "<div class=\"test fail\">#{htmlize $1}</div>\n"
    elsif str =~ /\A(OK.*)\Z/
      "<div class=\"test ok\">#{htmlize $1}</div>\n"
    elsif str =~ /^(\s+)File "(.+)", line (\d+), in (.*)/
      indent = $1
      file   = $2
      line   = $3
      method = $4
      indent += " " if file.sub!(/^\"(.*)\"/,"\1")
      url = "&amp;url=file://" + e_url(file)
      display_name = ENV["TM_DISPLAYNAME"]
      "#{htmlize(indent)}<a class=\"near\" href=\"txmt://open?line=#{line + url}\">" +
        (method ? "method #{CGI::escapeHTML method}" : "<em>at top level</em>") +
        "</a> in <strong>#{CGI::escapeHTML display_name}</strong> at line #{line}<br/>\n"
    end
  end
end

Проверьте и посмотрите, есть ли у вас то же самое. Если нет, вам следует рассмотреть возможность обновления TextMate и / или пакета. Пакет GetBundle позволяет легко обновлять пакеты, как описано здесь .

...