質問: ターミナルで python ファイルを実行したとき、以下のエラーがでます。 `python パス/ファイル名.py` ``` Traceback (most recent call last): File "/Users/xxx/Desktop/Python/test.py", line 5, in import pandas as pd File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/__init__.py", line 13 missing_dependencies.append(f"{dependency}: {e}") ^ SyntaxError: invalid syntax ``` なぜ一度も中身をいじっていない `pandas/init.py` に対して SyntaxError なんでしょうか。 さらにわからないのが、Jupyter Notebook で `import pandas` をやると正常に動きます。 Jupyter Notebook のモジュールのパスも Python3 になっています。 ご回答よろしくお願いいたします。 **基本情報** OS:Mac python3.8 **エラーが起こるまでの過程** Anaconda で python 環境をインストール→Jupyter notebook で !pip ができなかったので、公式サイトから Python3.8 をインストール、ターミナルから pip で pandas, jupyter をインストール→現状 2020/06/07 追記 ``` $python --version Python 2.7.16 $python -c 'import sys; print(sys.path)' ['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC'] ```
回答: ### 解決法 `python --version` がシステムに元からインストールされていた Python 2.x を指しています。おそらく `python3` コマンドが新しくインストールされたものを指しているのではないでしょうか。 なので、`python3 〈ファイルパス〉` のように実行してみてください。`pip` もおそらく `pip3` です。 ### python コマンドが Python 3 系を指すようにしたい もし `python` と打つだけで Python 3 系が起動されるようにしたければ、そのようにシェルコマンドのエイリアスを作れば良いです(`python` コマンド自体が Python 3 系を指すようにしてしまうと、Python 2 系を使うことを想定しているものが壊れる可能性があるのでオススメできません。自分のシェルでだけ Python 3 系が使われるように設定します)。 つまり、お使いのシェルにあわせて `~/.bash_profile` や `~/.zshenv` などに ``` alias python='python' ``` と書いてシェルを再起動すると良いです。 ただおそらく、その内色々なライブラリの依存関係がややこしくなっていくにつれ、この方法ではなくて Python の仮想環境を使いたくなってくるのではないかなあと個人的には思います(ここは趣味嗜好の分かれるところです)。 ### 補足:SyntaxError の理由 ちなみに `missing_dependencies.append(f"{dependency}: {e}")` が SyntaxError になるのは、`f"ほにゃらら"` という構文(f文字列)が Python 3.6 から追加された新しいものだからです。このエラーを見て、おそらく `python` コマンドが Mac にプリインストールされていた Python 2 系を指してしまっているのだろうなあと推測し、質問者さんにバージョンの確認をお願いしました。