Python脚本不会通过Textmate运行,OK in Idle和Eclipse
题
我写了以下作业作业的以下内容,它在运行Python 3的Eclipse和Eclipse中正常工作。
但是,我试图用新线1(我在这里找到的新行)将其运行,以将其指向Mac上的Python 3。它似乎正在运行Python 3,但返回错误。它说:Eoferror:阅读一行时EOF。它指的是下面的第5行。
有人知道为什么吗?
顺便说一句,这个文本伴侣问题不是家庭作业的一部分,因此我不是要获得家庭作业的帮助。我只想弄清楚如何使用Python 3使用文本对象。
#! /usr/local/bin/python3
#
# Tests user string against two conditions.
#
user_string = input("Enter a string that is all upper case and ends with a period: ")
if user_string.isupper() and user_string.endswith("."):
print("Your string met both conditions.")
else:
if user_string.isupper():
print("Your string does not end with a period.")
elif user_string.endswith("."):
print("Your string is not all upper.")
else:
print("Your string failed both conditions.")
解决方案
您看到的问题与Python版本无关。问题在于,文本伴侣不会尝试重定向标准输入,因此,当您通过Textmate的Python Bundle运行时 Run Script
命令,Python程序看到了立即的文件结束。 如这里所述, ,曾经对此更奇怪,但是它使用的机制不再在OS X 10.6中起作用,因此该功能已被禁用。
一种解决方案是使用 Shift-Command-R Run Script in Terminal
Textmate的Python捆绑包的命令。这会导致文本伴侣打开终端窗口并在此处运行脚本,您可以输入其中的输入。不幸的是,虽然文本成员确实尊重Shebang线 命令r Run Script command
, ,似乎没有这样做 Run Script in Terminal
命令。您可以以各种方式验证自己。尝试在Textmate中运行此代码段:
#! /usr/local/bin/python3
import sys
print(sys.executable)
为了解决这个问题,您可以设置 TM_PYTHON
环境变量文本成员。看 答案 有关如何做到这一点的更多详细信息。
其他提示
Textmate正在使用内置的Python,而不是尊重Shebang线。您可能必须破解捆绑代码才能使用正确的python。
不隶属于 StackOverflow