【Python】Python Launcherで意味不明なエラーが出た時の対処法:インタプリタの設定

  • URLをコピーしました!
目次

Python Launcher

皆さんはPythonのプログラムをどうやって実行されているでしょうか?

Jupyter Notebookだったり、Visual Studio Codeからターミナルやコマンドプロンプトを呼び出して実行だったり。

大体、いつも同じやり方で実行されていることと思います。

ただたまーに、本当にたまーにですが、ダブルクリックで実行するプログラムを作ったりしませんか?

で、今回は久々にダブルクリックで実行してみたら、エラーになったというお話しです。

どんなエラーだったか?

今回遭遇したエラーは最初はなかなか不可解でした。

Jupyter Notebook上で実行し、プログラムに問題がないことを確認。

そしてpyファイルを作成します。

(実際にはJypyter Notebookでプログラムを保存すると、自動でpyファイルを作成するように設定しています)

そしてターミナル上から実行してみても問題なし。

それで意気揚々とpyファイルをダブルクリックしてみたのですが、なぜか「SyntaxError : invalid syntax」が出てしまいました。

Jupyter Notebook上でもターミナル上でも問題なく動くので、「SyntaxError」なんて初歩的なエラーが出るわけないはずなので、一体何が起こったのかわからず、少し呆然としてしまいました。

エラーの原因

色々と試していった結果、どうやらエラーの原因は複数のバージョンのPythonがPC上にあり、ダブルクリックで実行したpyファイルに使われるPythonとAnacondaやターミナルで使われるPythonが違っていることにあるようでした。

私が使っているPCはMacなのですが、Macには最初からPythonがインストールされています。

しかもPython2とPython3の二つのバージョンがインストールされているということらしいです。

確認してみましょう。

ターミナルを開き、「where python」と入力し、実行してみます。

ちなみ「where プログラム名」でそのプログラム名のリンク元を参照できます(多分)。

where python

実行結果
/Users/username/opt/anaconda3/bin/python
/usr/bin/python

これによると上のPythonはAnacondaのPython、つまりはJupyter Notebookで使われているPythonです。

下のPythonは何やら分かりません。

ということでターミナル上で下のPythonを実行してみましょう。

/usr/bin/python

実行結果
WARNING: Python 2.7 is not recommended. 
This version is included in macOS for compatibility with legacy software. 
Future versions of macOS will not include Python 2.7. 
Instead, it is recommended that you transition to using 'python3' from within Terminal.

Python 2.7.18 (default, Nov 13 2021, 06:17:34) 
[GCC Apple LLVM 13.0.0 (clang-1300.0.29.10) [+internal-os, ptrauth-isa=deployme on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

ということでこちらが元々MacにインストールされているPython2でした。

このままではPythonのコマンド入力待ち状態なので「Control + D」で終了します。

ついでに上のAnacondaのPythonも確認してみましょう。

/Users/username/opt/anaconda3/bin/python

実行結果
Python 3.8.12 (default, Oct 12 2021, 06:23:56) 
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

ついでにPython3も確認してみます。

where python3

実行結果
/Users/username/opt/anaconda3/bin/python3
/usr/local/bin/python3
/usr/bin/python3

Python3で検索かけると3つ見つかりました。

一番上の「/Users/username/opt/anaconda3/bin/python3」から確認していきましょう。

/Users/username/opt/anaconda3/bin/python3

実行結果
Python 3.8.12 (default, Oct 12 2021, 06:23:56) 
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

こちらがAnacondaで使われているPython3で、先ほどの「/Users/username/opt/anaconda3/bin/python」のものと同じもののようです。

次は「/usr/local/bin/python3」。

/usr/local/bin/python3

実行結果
Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

最後に「/usr/bin/python3」。

/usr/bin/python3

実行結果
Python 3.8.9 (default, Oct 26 2021, 07:25:54) 
[Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

なんと「Python 3.8.12」と「Python 3.8.1」と「Python 3.8.9」の3種類のPython3が存在しているのが分かりました。

これに先ほどのPython2を加えると、4種類のPythonがインストールされていて、これが今回のエラーの原因だったのです。

対処法

それでは対処法です。

まず前提条件として、こちらの記事で解説したようにPythonプログラムをダブルクリックで実行するよう設定してあるとします。

Macではpyファイルをダブルクリックすると、Python Launcherが起動し、Pythonプログラムを実行します。

ここでエラーが出ても慌てずに、タスクバーに出てきたPython Launcherのアイコン(ロケットマーク)をクリックします。

そしてメニューバーの「Python Launcher」をクリックして、「Preferences…」をクリックします。

開いたPreferencesウインドウで、「Interpreter」という欄を探します。

pyファイルをダブルクリックで実行した際は、ここで指定したPythonが使用されます。

初期状態では「/usr/bin/pythonw」となっており、これは先ほど調べた4種類のPythonのうち「/usr/bin/python」と同等のものを示しています。

つまり私の環境では意図せずに「Python2」を使っていたというわけです。

ということでここに先ほど調べたPythonのうち、Anacondaで使っているPython「/Users/username/opt/anaconda3/bin/python」を入力し、エンターキーを押します。

usernameはPCによって違うのでご注意ください。

またエンターキーを押さないと、入力したものが保存されないようなので、こちらもご注意ください。

これで再度pyファイルをダブルクリックして実行してみると、問題なくプログラムが動きました。

ということで今回はPythonプログラムをダブルクリックで実行するときにエラーとなったお話しでした。

あまり複数のバージョンのPythonを一つの環境に存在させるのは良くないのですが、Macだとどうしても最初からインストールされているPythonがあるためのこういう問題は起こりやすそうです。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次