使用Python 3.1和TextMate

3zz*_*zzy 24 python macos textmate python-3.x

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

谢谢

Ned*_*ily 53

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项目.

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

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

  2. 单击Advanced窗格

  3. 单击Shell Variable选项卡

  4. 单击+以添加新变量

  5. TM_PYTHONVariable字段中输入并在字段中输入python的完整路径Value(可能/usr/local/bin/python3.1)

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

更新时间(2010-10-31):

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

#!/usr/local/bin/python3.1

# sample code to show version
import sys
print(sys.version_info)
Run Code Online (Sandbox Code Playgroud)

在许多情况下,您不希望硬连线绝对路径,而是通过正常的shell PATH环境变量来管理使用.传统/usr/bin/env上用于此目的.然而下运行时TextMate,你的壳轮廓文件通常不使用这么路径的任何变化不会出现有可能包括/usr/local/bin/opt/local/bin或任何你想要的python3命令的位置.为了解决这个问题,您可以将全局PATHshell变量添加或修改为TextMate- > Preferences(参见上文),其值为,例如/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin.然后你可以使用这样一个更通用的shebang线:

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

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

  • TextMate 2改变了TM1中的大部分旧项目文件夹功能.TM2有一种更灵活的方法,可以使用`.tm_properties`文件在分层的每个文件夹的基础上指定各种设置,包括`PATH`变量.例如,请参阅:http://blog.macromates.com/2011/git-style-configuration/ (2认同)

小智 8

晚了,对不起!我认为你想使用TextMate的"内置"解释器运行脚本?我发现最简单的解决方案是添加一个非常好的shebang;

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

对于python 3.1或;

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*lli 5

根据这个长线程(关于Python 3.0,以及去年春天存在的TextMate版本,但我相信它仍然适用于Python 3.1和今天的TextMate),你可以完成它(例如通过@Ned的回答),但是一次你做很多TextMate命令可能会破坏(因为它们被编写为使用Python 2,并且Python 3不向后兼容Python 2 - 例如,reload在Python 3中消失的使用在线程中反复提到).尽管如此,如果你不使用或需要很多TextMate的功能,它可能会起作用(例如,当你使TextMate使用Python 3而不是Python 2时,LaTeX排版被提及为完全破坏的东西).