Python脚本赢得';t通过TextMate运行,在空闲和Eclipse中正常

Python脚本赢得';t通过TextMate运行,在空闲和Eclipse中正常,python,textmate,eoferror,Python,Textmate,Eoferror,我为家庭作业写了以下内容,它在空闲和运行Python 3的Eclipse中运行良好 #! /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.endswit

我为家庭作业写了以下内容,它在空闲和运行Python 3的Eclipse中运行良好

#! /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.")
但是,我尝试从TextMate运行它,并使用新的第1行(我在这里找到的)将其指向Mac上的Python 3。它似乎正在运行Python3,但返回了一个错误。读一行的时候,上面写着:EOFError:EOF。它指的是下面的第5行

有人知道为什么吗

顺便说一句,这个TextMate问题不是家庭作业的一部分,所以我不想得到家庭作业的帮助。我只是想弄清楚如何将TextMate与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.")

Textmate使用的是内置Python,而不是shebang行。为了使用正确的python,您可能必须破解捆绑包代码

Textmate使用的是内置Python,而不是shebang行。为了使用正确的python,您可能必须破解捆绑包代码

您看到的问题与Python版本无关。问题是TextMate不尝试重定向标准输入,因此,当您通过TextMate的Python bundle
Run Script
命令运行时,Python程序会立即看到文件的结尾,TextMate过去对此很感兴趣,但它所使用的机制在OS X 10.6中不再有效,因此该功能被禁用

一种解决方案是在TextMate的Python包的Terminal命令中使用Shift-Command-R
运行脚本。这会导致TextMate打开一个终端窗口并在那里运行脚本,您可以在那里输入输入。不幸的是,虽然TextMate确实使用正常的命令-R
运行脚本命令
尊重shebang行,但它似乎不使用终端中的
运行脚本
命令。您可以通过各种方式验证您自己。尝试在TextMate中运行此代码段:

#! /usr/local/bin/python3
import sys
print(sys.executable)

要解决这个问题,可以在TextMate中设置
TM_PYTHON
环境变量。有关如何执行此操作的更多详细信息,请参阅。

您看到的问题与Python版本无关。问题是TextMate不尝试重定向标准输入,因此,当您通过TextMate的Python bundle
Run Script
命令运行时,Python程序会立即看到文件的结尾,TextMate过去对此很感兴趣,但它所使用的机制在OS X 10.6中不再有效,因此该功能被禁用

一种解决方案是在TextMate的Python包的Terminal
命令中使用Shift-Command-R
运行脚本。这会导致TextMate打开一个终端窗口并在那里运行脚本,您可以在那里输入输入。不幸的是,虽然TextMate确实使用正常的命令-R
运行脚本命令
尊重shebang行,但它似乎不使用终端中的
运行脚本
命令。您可以通过各种方式验证您自己。尝试在TextMate中运行此代码段:

#! /usr/local/bin/python3
import sys
print(sys.executable)

要解决这个问题,可以在TextMate中设置
TM_PYTHON
环境变量。有关如何做的详细信息,请参阅。

请求家庭作业帮助没有什么错。只要你不要求我们做你的家庭作业。要求家庭作业帮助没有什么错。只要你不要求我们做你的家庭作业。这似乎可以解释这一点。我注意到当我在终端中运行它时,它似乎在Python3语法上有问题。您的解决方案是有效的。我在项目中编辑了TM_PYTHON,它在终端中正常运行。非常感谢,太好了!顺便说一句,如果你问一个关于StackOverflow的问题,你的期望是要么将答案标记为已接受(这是回答者获得声誉点数的方式),要么改进你的问题,直到你得到一个可接受的答案。标记为已接受。谢谢你的帮助。我不知道,这就是原因。我注意到当我在终端中运行它时,它似乎在Python3语法上有问题。您的解决方案是有效的。我在项目中编辑了TM_PYTHON,它在终端中正常运行。非常感谢,太好了!顺便说一句,如果你问一个关于StackOverflow的问题,你的期望是要么将答案标记为已接受(这是回答者获得声誉点数的方式),要么改进你的问题,直到你得到一个可接受的答案。标记为已接受。谢谢你的帮助。我不知道,谢谢。用下面的解决方案修复了它,请重新安装。在project中编辑到TM_PYTHON。谢谢。用下面的解决方案修复了它,请重新安装。在项目中编辑到TM_PYTHON。