我为家庭作业写了以下内容,它在IDLE和运行Python 3的Eclipse中运行良好。
但是,我尝试使用新的第1行(我在这里找到)从TextMate运行它,将它指向Mac上的Python 3。它似乎运行Python 3但返回错误。它说:EOFError:读取一条线时的EOF。它指的是下面第5行。
任何人都知道为什么?
顺便说一下,这个TextMate问题不是家庭作业的一部分,所以我不是想找功课帮忙。我只想弄清楚如何在Python 3中使用TextMate。#! /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.")
答案 0 :(得分:2)
您看到的问题与Python版本无关。问题是TextMate不会尝试重定向标准输入,因此,当您通过TextMate的Python bundle Run Script
命令运行时,Python程序会立即看到文件末尾。 As explained here,TextMate过去对此有所了解,但它使用的机制在OS X 10.6中不再起作用,因此该功能被禁用。
一种解决方案是使用TextMate的Python包的 Shift-Command-R Run Script in Terminal
命令。这会导致TextMate打开终端窗口并在那里运行脚本,您可以在那里输入输入。不幸的是,虽然TextMate确实尊重使用普通 Command-R Run Script command
的shebang行,但使用Run Script in Terminal
命令似乎不会这样做。您可以通过各种方式验证自己。尝试在TextMate中运行此代码段:
#! /usr/local/bin/python3
import sys
print(sys.executable)
要解决这个问题,您可以在TextMate中设置TM_PYTHON
环境变量。有关如何执行此操作的详细信息,请参阅the answer here。
答案 1 :(得分:0)
Textmate正在使用内置的Python,而不是尊重shebang系列。您可能不得不破解捆绑代码以使用正确的python。