在TextMate中使用Python 3.1

29 投票
5 回答
18878 浏览
提问于 2025-04-15 16:14

看起来TextMate使用的是自带的Python版本,我猜是这样(sys.path不起作用)。我该怎么设置才能用3.1版本呢?我已经安装了3.1的包,并且可以用IDLE进行交互式操作,但现在我需要在TextMate中使用。

谢谢

5 个回答

5

根据这个很长的讨论串(讨论的是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就会完全失效),那么可能还是可以用的。

9

抱歉来得有点晚!我猜你是想用TextMate自带的解释器来运行脚本吧?我发现最简单的办法就是加一个“shebang”,这个方法效果非常好;

#!/usr/bin/env python3

对于Python 3.1来说;

#!/usr/bin/env python

对于系统默认的Python也是可以的,不过后者在这个练习中其实没必要。

55

TextMate使用TM_PYTHON这个变量的值来找到Python解释器的路径。一个好的解决办法是利用TextMate可以为每个项目定义变量的功能,比如TM_PYTHON

  1. 打开一个新的或已有的TextMate项目(选择文件 -> 新建项目文件 -> 打开

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

  3. 点击侧边栏中的获取信息i)图标,会出现一个项目信息面板。

  4. 点击+来添加一个新变量。

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

  6. 关闭信息窗口并保存项目(文件 -> 另存项目)。

然后你可以根据需要向项目中添加文件,它们将使用你选择的Python版本通过TextMate的Python包的运行脚本命令来执行。你可能想保存一个Python 3项目,比如用来运行临时脚本。对于更大的项目,你还是想为它创建一个单独的TextMate项目。

如果你想在TextMate中全局更改使用的Python版本,可以这样做:

  1. TextMate菜单栏中,打开TextMate -> 偏好设置

  2. 点击高级面板

  3. 点击Shell变量标签

  4. 点击+来添加一个新变量

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

正如Alex所指出的,全球更改Python版本可能会影响TextMate的其他功能,所以每个项目单独更改可能是更好的解决方案。

更新(2010-10-31):

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

#!/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命令所在的其他地方。为了绕过这个问题,你可以在TextMate -> 偏好设置中添加或修改一个全局的PATH shell变量,值可以是/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin。然后你可以使用一个更通用的shebang行,例如:

#!/usr/bin/env python3

(这一切在最新的标准TextMate及其Python包中似乎都能正常工作:对于早期版本或其他Python包没有保证。)

撰写回答