2010-12-31 10 views
5

非常に混乱している問題が発生しました。私がPythonインタプリタに入力したものは、「無効な構文」を返します。以下の例を参照してください。私はインタプリタを実行するプロンプトのコードページを騙そうとしましたが、それは全く役に立たないようです。Python Interactive Interpreterは、Windowsで「無効な構文」を返す

さらに、この特定の不思議なバグをオンライン以外の場所で見つけることができませんでした。

誰もが提供できる援助は素敵でしょう。私は既にPythonを再インストールしようとしましたが、私は運がありませんでした。問題は3.13と2.7の両方にもあります。

実行中: Pythonバージョン3.1.3、 Windows XP SP3。

行き方:

C:\Program Files\Python31>.\python 
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on 
win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 2+2 
    File "<stdin>", line 1 
    2+2 
    ^ 
SyntaxError: invalid syntax 

>>> x = "Oh, fiddlesticks." 
    File "<stdin>", line 1 
    x = "Oh, fiddlesticks." 
         ^ 
SyntaxError: invalid syntax 
+0

これはなんですか? – user225312

+0

あなたはPythonを再インストールしようとしましたか? – Ant

+0

2.7と同様に再インストールを試みました。いずれにせよ運がない。 – user559217

答えて

0

一度、などの2002年に、私は、Windowsは行末で実行できなかったのPythonのバージョンを構築するために管理しました。このような構文エラーは、行末を指しています。私はこれがWindowsのインストールを使用しているので、このケースでは問題だとは思えません。

スペースではなく改行しないスペースを誤って使用していたときも同様の問題がありましたが、プロンプトからどうなるかわかりません。また、2 + 2の例ではスペースも引用符も問題になる可能性があります。

どのようなエンコーディングとキーボード設定を使用していますか?

+0

キーボードはen-USです。 cmdのコードページのデフォルトは437(US)です。ローカリゼーションの設定もen-USです。私はあなたがこれを超えて必要なデータが不明です。私は非常によくWindowsを話さない... – user559217

+0

そして、これを見ていただきありがとうございます。 – user559217

+0

@ user559217:あなたの問題は「不可能」であり、起こることはありません。あなたがrdesktopでリモートコントロールできるようにあなたのPCの設定を持っているなら、それはとても奇妙なので、それを見てみることができます。 :) –

4

サンプルがクリーンアップされたので、回線終端に問題があるようです。

これは解決策はありませんが、このコードを含むファイルt.pyを作成した場合に何が起こるか、それを実行した後、あなたがして、その後2+2のようなものを入力した場合、いくつかのテキスト?:

import sys; print(repr(sys.stdin.readline())) 

を入力これはPythonインタプリタがあなたの例で何を得ているのかを示し、それが順番に問題の手がかりを与えるかもしれません。

また、コマンドプロンプトでこれを試すことができます。

python -c "import sys; print(repr(sys.stdin.readline()))" 

これを使用すると、1つの行を入力し、その1つの行の詳細を表示することができます。

+2

独創的な診断技術。しかし、改行は 'input'と' raw_input'によって取り除かれます。あなたは 'sys.stdin.readline()'を使う必要があります。 –

+0

改行だけの場合は、問題の原因になってはいけませんが、私はあなたの提案がより良く聞こえることに同意します。 – Duncan

0

これが心配です:

C:\Program Files\Python31>.\python 

ソフトウェアのインストールディレクトリにカレントディレクトリを設定してソフトウェアを実行するために非常に良いアイデアになることはありません。ソフトウェアの実行を妨げるファイルを作成するリスクがあります。あなたがバグや奇妙な行動を取るようになると、その結果として起こるスラッシングは、状況を完全に制御不能にする可能性があります。

これは良いです:

C:\ somewhere_else_with_no_spaces> "C:\プログラムファイル\ python31の\パイソン"

ベストは "プログラムファイル" からそれを維持することです。私が間違っていない限り、推奨されるインストールフォルダはC:\Python31です。これは、 "プログラムファイル"を使用するたびに行うように引用符を必要としないためです。 AFAIKには、「プログラムファイル」にソフトウェアをインストールする正当な理由はありません。

一部の診断:

A.コマンドプロンプトウィンドウを開きます。
B.次のように入力します。dir "c:\program files\python31"
C.ステップBの結果をコピーして質問の編集に貼り付けます。つまり、コメントには入れないでください。

誰かがキーボードマクロについて質問した質問に(あなたの質問の編集で)回答しても助かります...また、スマートなキーボードの可能性や、複数のIMEを使用し、 "正しい" 1。また、この現象はPython以外のソフトウェアでも起こりますか?

5

3.2に固定するために予定されている、対話的およびバッファなしのPythonを実行するときに、既知の問題があります - http://bugs.python.org/issue11098

厄介な事があり、1は非バッファIを使用することができる、そして古いバージョンにバックポートすることができる参照/それを実現することなく私の場合(Python 2.5.4(r254:67916))、Pythonがいつもという環境変数を設定していましたが、いつもが実行されています(WindowsではPYTHONUNBUFFERED = YES、 YESの場合)、それを忘れてしまった。 env.varを削除します。私の問題を解決しました。

この環境変数を確認する価値があります。デフォルトでは設定されていません。

0

私はあなたと同じではないかもしれないが同じ問題に直面しますが、診断のための別の方法があります。常に履歴ファイルを設定する必要があります。

enter image description here

私はvimで履歴ファイルを理由を見つける(または、あなたはケースvimhexdump -Cが隠された文字を表示しません考えるかもしれません):

enter image description here

http://www.w3.org/International/questions/qa-bidi-controlsによると:

RLMおよびLRM文字

Unicodeで提供されている2つの他の目に見えない埋め込み方向制御文字 は、通常対応するマークアップを持たず、 は文字またはエスケープ形式で使用する必要があります。彼らが であることに注意してください。それは、我々が議論した他の制御文字のように、 の範囲のテキストを区切るために、ペアではなく単独で使用されるからです。

U+200E: LEFT-TO-RIGHT MARK 
U+200F: RIGHT-TO-LEFT MARK 

理由が隠されRLMとLRM文字が含まれていた(私はそれはしかし、セキュリティに危険を知っている)オンラインコードからので、私の直接のコピー/ペーストです。