【问题标题】:Using Python 3.1 with TextMate将 Python 3.1 与 TextMate 一起使用
【发布时间】:2009-11-21 16:34:17
【问题描述】:

TextMate 似乎使用了我假设的内置 Python 版本(sys.path 不起作用)。您如何将其配置为使用 3.1?我已经安装了 3.1 包,我可以使用 IDLE 进行交互式会话,但我现在需要使用 TextMate。

谢谢

【问题讨论】:

    标签: python macos python-3.x textmate


    【解决方案1】:

    TextMate 使用TM_PYTHON 变量的值来查找Python 解释器的路径。一个好的解决方案是利用 TextMate 在每个项目的基础上定义变量(如 TM_PYTHON)的能力:

    1. 打开一个新的或现有的 TextMate 项目(File -> New ProjectFile -> Open

    2. 在项目列表侧边栏中取消选择任何文件。

    3. 点击边栏中的Get Info (i) 图标。出现Project Information 窗格。

    4. 单击 + 添加新变量。

    5. 在变量字段中输入 TM_PYTHON,在值字段中输入所需 python 的完整路径(例如,/usr/local/bin/python3.1)。

    6. 关闭信息窗口并保存项目 (File -> Save Project As)。

    然后您可以根据需要将文件添加到项目中,它们将使用 TextMate Python 包的 Run Script 命令在所选 python 下运行。您可能希望保存一个Python 3 项目,例如,用于在 Python 3 下运行临时脚本。对于较大的项目,您无论如何都需要为其创建一个单独的 TextMate 项目。

    更改TextMate内全局使用的Python版本:

    1. TextMate菜单栏,打开TextMate -> Preferences

    2. 单击Advanced 窗格

    3. 点击Shell Variable标签

    4. 点击+添加新变量

    5. Variable字段中输入TM_PYTHON,在Value字段中输入python的完整路径(可能是/usr/local/bin/python3.1

    正如 Alex 指出的那样,您可能会通过全局更改 Python 版本来破坏其他 TextMate 功能,因此每个项目的更改可能是一个更好的解决方案。

    更新(2010-10-31):

    对于某些项目,还有另一种方法可能更容易使用。 TextMate 的 Python 包中的 Run 命令似乎尊重正在运行的文件中的 shebang 行。因此,除了修改TM_PYTHON,您还可以通过包含这样的第一行来指定要使用的解释器的路径:

    #!/usr/local/bin/python3.1
    
    # sample code to show version
    import sys
    print(sys.version_info)
    

    在许多情况下,您不希望硬连线绝对路径,而是通过普通 shell PATH 环境变量来管理使用。传统上,/usr/bin/env 用于此目的。但是,当在TextMate 下运行时,您的 shell 配置文件通常不会被使用,因此对 PATH 的任何更改都不会显示在那里,包括可能的/usr/local/bin/opt/local/bin 或您想要的python3 命令所在的任何位置。为了解决这个问题,您可以将全局 PATH shell 变量添加或修改为 TextMate -> Preferences(见上文),其值为 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin。然后你可以像这样使用更通用的 shebang 行:

    #!/usr/bin/env python3
    

    (这一切似乎都适用于最新的 vanilla TextMate 及其 Python 包:不保证早期版本或其他 Python 包。)

    【讨论】:

    • 我无法弄清楚...也许是因为我使用的是 TextMate 2.0-alpha9495。没有高级窗格,也找不到新的项目选项。我也没有看到 shebang 行,只是一些 ruby​​ 代码。
    • TextMate 2 更改了 TM1 中的大部分旧项目文件夹功能。 TM2 有一种更灵活的方式来指定各种设置,包括PATH 变量,使用.tm_properties 文件在分层、每个文件夹的基础上。参见,例如:blog.macromates.com/2011/git-style-configuration
    【解决方案2】:

    聚会迟到了,抱歉!我认为您想使用 TextMate 的“内置”解释器运行脚本?我发现最简单的解决方案是添加一个 shebang,效果非常好;

    #!/usr/bin/env python3
    

    对于 python 3.1 或;

    #!/usr/bin/env python
    

    对于默认系统python,虽然后者对于练习来说是多余的。

    【讨论】:

      【解决方案3】:

      根据this long thread(关于 Python 3.0,去年春天已有 TextMate 版本,但我相信对 Python 3.1 和今天的 TextMate 仍然有效),您可以完成它(例如通过 @Ned 的回答) , 但是一旦你执行许多 TextMate 命令可能会中断(因为它们是为使用 Python 2 而编写的,而 Python 3 与 Python 2 不向后兼容——例如,reload 的使用,它在 Python 3 中消失了,在线程中反复提到)。不过,如果您不使用或不需要 TextMate 的大部分功能,它可能仍然有效(例如,LaTeX 排版被提到一旦您让 TextMate 使用 Python 3 而不是 Python 2 就会完全中断)。

      【讨论】:

      • 我已经更新了答案,包括如何在每个项目的基础上设置变量。这应该可以防止破损!
      • 呃……你们这些细节吓到我了!我只需要使用 Textmate 运行 3.1 即可进行基础学习! :) 我按照 Ned 的指示添加了 TM_PYTHON:/Library/Frameworks/Python.framework/Versions/3.1/bin/python3.1 并且它现在使用 Python3.1 — 它没有显示 sys.path 的任何细节,但我试过了this: print ("Is this {}? — {}".format('Python 3.1', 'Yes!')) 并且成功了!多谢! :)
      【解决方案4】:

      shebang 是最好的解决方案,在终端输入查看 python 3 的安装位置:

      哪个python3

      你会得到这样的东西:

      /usr/local/bin/python3

      如果没有出现,请先安装 python3

      并在脚本顶部插入:

      #!/usr/local/bin/python3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 2014-04-06
        • 2020-09-04
        相关资源
        最近更新 更多