質問

私は宿題の割り当てのために以下を書きました、そして、それは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を使用するにはバンドルコードをハッキングする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top