如何在Textmate中使用Python 3.1.2?

时间:2010-08-27 06:19:07

标签: python textmate

TextMate 1.5.9似乎使用Python 2.6.1。你如何配置它来使用3.1代替?我已经安装了3.1软件包,我可以使用IDLE进行交互式会话,但我现在想使用TextMate。我已经看过指示你定义项目变量的帖子(TM_PYTHON:interpreter path)。我尝试了这个,但是当我使用Cmd + r在Textmate中运行脚本时,我仍然将Python 2.6.1视为版本号(顶部/右侧)。甚至终端也使用2.7!

帮助!

2 个答案:

答案 0 :(得分:1)

我假设你指的是this post。它应该工作,但要确保您使用正确的路径到您安装的Python 3.1。检查:

$ which python3
/usr/local/bin/python3

如果你使用了python.org 3.1安装程序,它应该在/usr/local/bin/python3处可用。其他方法可能会有所不同,例如,MacPorts python3.1通常位于/opt/local/bin/python3

更新:既然你表明它仍然不适合你,我猜我们正在使用不同版本的TextMate的Python包。使用TextMate Bundle Editor(菜单项Bundles -> Bundle Editor -> Show Bundle Editor)然后选择Python包的Run Script命令,我看到以下命令片段:

#!/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捆绑包可让您轻松按照here所述保持捆绑包的最新状态。

答案 1 :(得分:1)

#! /usr/bin/python

从你的剧本中删除这个正常的她然后运行它然后你会在textmates窗口显示版本3。默认的shebang会覆盖变量并将您发送回osx默认版本2.6.1。这有点奇怪......