【发布时间】:2009-11-21 16:34:17
【问题描述】:
TextMate 似乎使用了我假设的内置 Python 版本(sys.path 不起作用)。您如何将其配置为使用 3.1?我已经安装了 3.1 包,我可以使用 IDLE 进行交互式会话,但我现在需要使用 TextMate。
谢谢
【问题讨论】:
标签: python macos python-3.x textmate
TextMate 似乎使用了我假设的内置 Python 版本(sys.path 不起作用)。您如何将其配置为使用 3.1?我已经安装了 3.1 包,我可以使用 IDLE 进行交互式会话,但我现在需要使用 TextMate。
谢谢
【问题讨论】:
标签: python macos python-3.x textmate
TextMate 使用TM_PYTHON 变量的值来查找Python 解释器的路径。一个好的解决方案是利用 TextMate 在每个项目的基础上定义变量(如 TM_PYTHON)的能力:
打开一个新的或现有的 TextMate 项目(File -> New Project 或 File -> Open)
在项目列表侧边栏中取消选择任何文件。
点击边栏中的Get Info (i) 图标。出现Project Information 窗格。
单击 + 添加新变量。
在变量字段中输入 TM_PYTHON,在值字段中输入所需 python 的完整路径(例如,/usr/local/bin/python3.1)。
关闭信息窗口并保存项目 (File -> Save Project As)。
然后您可以根据需要将文件添加到项目中,它们将使用 TextMate Python 包的 Run Script 命令在所选 python 下运行。您可能希望保存一个Python 3 项目,例如,用于在 Python 3 下运行临时脚本。对于较大的项目,您无论如何都需要为其创建一个单独的 TextMate 项目。
更改TextMate内全局使用的Python版本:
从TextMate菜单栏,打开TextMate -> Preferences
单击Advanced 窗格
点击Shell Variable标签
点击+添加新变量
在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 包。)
【讨论】:
PATH 变量,使用.tm_properties 文件在分层、每个文件夹的基础上。参见,例如:blog.macromates.com/2011/git-style-configuration
聚会迟到了,抱歉!我认为您想使用 TextMate 的“内置”解释器运行脚本?我发现最简单的解决方案是添加一个 shebang,效果非常好;
#!/usr/bin/env python3
对于 python 3.1 或;
#!/usr/bin/env python
对于默认系统python,虽然后者对于练习来说是多余的。
【讨论】:
根据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 就会完全中断)。
【讨论】:
shebang 是最好的解决方案,在终端输入查看 python 3 的安装位置:
哪个python3
你会得到这样的东西:
/usr/local/bin/python3
如果没有出现,请先安装 python3
并在脚本顶部插入:
#!/usr/local/bin/python3
【讨论】: