対話型シェルにおいて3系をグローバル指定にした状態で、2系のprint文「print "Hello World!"」を実行してもエラーにならずちゃんと表示されます。一方、2系をグローバル指定にした状態で、3系の「print ("Hello World")」を実行してもエラーにならずにちゃんと表示されます。2系と3系では互換性がないということですが、何処がおかしいのでしょうか?また、後者の場合は2to3が自動で働いてるのでしょうか?お分かりの方、ご回答宜しくお願いします。
追記:幾つかの回答有難う御座いました。質問の意味は下記の状況になります。
Python
1$ python -V 2Python 2.7.10 3$ pyenv global 2.7.12 4$ pyenv versions 5 system 6* 2.7.12 (set by /Users/~/.pyenv/version) 7 3.5.2 8$ python 9Python 2.7.10 (default, Oct 23 2015, 19:19:21) 10[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 11Type "help", "copyright", "credits" or "license" for more information. 12>>> print("Hello World") 13Hello World
ご指摘頂いた、$ python -Vコマンドと$ pythonコマンドの後に、Python 2.7.10が表示されるのは何故でしょうか?
$ pyenv global 2.7.12コマンドで、使用するPythonの全体のバージョンが2.7.12に変わるものだと思っていました。
「グローバル指定」ってなんのことでしょうか?実行時のPythonバージョンはどのように表示されていますか?対話シェルのバージョン表示を添付してください。対話シェルを使っていないのであれば、python -V でバージョンを確認してください。
ご質問有難う御座いました。追記させて頂きました。
更新された内容では、コマンドラインの内容が引用に解釈されてしまっていて読めません。コードを埋め込むための記法を使って書いてください。また、Pythonコマンドの実行時にバージョンなどは表示されませんか?されているなら、それも貼り付けてください。それとは別に、 `python` を起動する代わりに `python -V` を実行してみてください。起動しようとしているPythonのバージョンが表示されます。
見づらくて失礼致しました。上記にも記載させて頂きましたが、$ pyenv globalコマンドで使用するPython全体のバージョンの切り替えが可能と思ってましたが違うのでしょうか?
質問の真の趣旨は「pyenv設定が反映されないのはなぜか」でしょうか。PATH環境変数に問題があると推測されます。OS標準Pythonインストール先へのパスが、pyenv環境が設定する先のパスよりも優先されています(もしくは、単にpyenv環境を正しく構成できていない)。