2017-01-09 6 views
2

私は、MacOS 10.12でAutomatorを使用してPython 3スクリプトを起動しようとしています。スクリプトは、端末からコマンド:python3 my_script.pyで実行するとうまく動作します。python3はmacシェルスクリプトから実行されません

Automatorには、/ bin/bashシェルを使用する「シェルスクリプトの実行」機能があります。シェルはコマンドpython my_script.pyでスクリプトを実行しますが、これはPython 2.7で書かれたスクリプトでのみ動作するようです。

私のスクリプトは、#!/usr/bin/env python3で始まります。これは、適切なPythonインタプリタにシェルを向けると思っていましたが、そうではありません。

回避策として、Pythonインタプリタへのフルパスを挿入するとスクリプトが実行されますが、/Library/Frameworks/Python.framework/Versions/3.5/bin/python3がありますが、Python 3.6に更新するとコマンドが機能しない可能性があるため、このオプションは準最適です。

Python3スクリプトを実行するように/ bin/bashシェルに指示する良い方法はありますか?

+0

スクリプトを実行可能にしましたか? 'chmod + x my_script.py'を実行するとスクリプトが実行可能になり、' python3 my_script.py'を使わずに '。/ my_script.py'を実行するだけです。 –

+0

' chmod + x'を実行しましたが、助けてください。アクセス権は '-rwxr-xr-x'です。 – Slipup

+0

'which python3'を実行すると、あなたのシバンの正しいパスがわかります。 –

答えて

2

あなたはシェバングラインを持っているので、あなたが./my_script.pyを行うことができますし、それは、Python 3

+1

これがなぜ機能するのかを明確にする: 'python my_script.py'でスクリプトを実行すると、' python'コマンドが明示的にシバンを上書きします。どのインタプリタを使用するか指定せずにスクリプト*を実行すると(例えば '。/ my_script.py'だけで)、OSはシボンを見て、どのインタプリタを使うかを調べます。 –

+0

この提案をありがとうございます。私は 'python'コマンドを使わずに走ったので、' env:python3:No such file or directory'というエラーが出ますが、これは私には意味がありません。 '/ Library/Frameworks/Python.framework/Versions/3.5/bin/python3'を取得します。ご協力ありがとうございました! – Slipup

-1

マンで実行する必要があります。私はMacでdummieですが、まずはPython 3.4を使用することをお勧めします。これはPython 3の最も安定したバージョンです。 それ以外の場合は、 "回避策"が正しい方法です(パスのもの)。

関連する問題