Pythonスクリプトはテキストメイトを介して実行されません。
質問
私は宿題の割り当てのために以下を書きました、そして、それはPython 3を実行しているアイドルとEclipseで正常に動作します。
しかし、MacのPython 3を指すために、新しいライン1(ここで見つけた新しいライン1)でTextmateから実行しようとしました。 Python 3を実行しているようですが、エラーを返します。それは言う:eoferror:eof行を読むとき。以下の5行目を参照しています。
誰かが理由を知っていますか?
ところで、このテキストメイトの問題は宿題の割り当ての一部ではないので、宿題の助けを得ようとはしていません。 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.")
解決
あなたが見ている問題は、Pythonバージョンとは何の関係もありません。問題は、TextmateのPythonバンドルを介して実行されているときに、Textmateが標準入力をリダイレクトしようとしないことです。 Run Script
コマンド、Pythonプログラムでは、すぐにファイルが終了します。 ここで説明したように, 、テキストメイトは以前はこれについてファンシーでしたが、使用したメカニズムはOS X 10.6では機能しなくなったため、機能は無効になりました。
1つの解決策は、を使用することです Shift-Command-r Run Script in Terminal
TextmateのPythonバンドルのコマンド。これにより、Textmateは端末ウィンドウを開き、そこでスクリプトを実行すると、そこに入力を入力できます。残念ながら、テキストメイトは通常のシェバン線を尊重しますが command-r Run Script command
, 、それはそうしていないようです Run Script in Terminal
指図。あなたはそれをさまざまな方法で確認できます。このコードスニペットをテキストメイトで実行してみてください:
#! /usr/local/bin/python3
import sys
print(sys.executable)
それを回避するために、あなたは設定することができます TM_PYTHON
テキストメイトの環境変数。見る ここの答え その方法の詳細については。
他のヒント
テキストメイトは、シェバンラインを尊重するのではなく、組み込みのPythonを使用しています。おそらく、適切なPythonを使用するにはバンドルコードをハッキングする必要があります。