web-dev-qa-db-ja.com

pythonコマンドなしでターミナルでpythonスクリプトを実行します

pythonスクリプトがあるので、script1.pyと名付けましょう。この方法でターミナルで実行できます:

python /path/script1.py
...

しかし、私はコマンドラインプログラムのように実行したい:

arbitraryname
...

どうすればいいですか?

45
Alpagut

スクリプトの開始時に シェバンライン を使用します。

#!/usr/bin/env python

ファイルを実行可能にします。

chmod +x arbitraryname

pATH上のディレクトリに配置します(シンボリックリンクの場合もあります)。

cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname
78
Martijn Pieters

3つの部分があります。

  1. スクリプトの実行方法を示す「シェバン」をスクリプトの上部に追加します
  2. スクリプトに「実行」権限を付与します。
  3. PATHにスクリプトを作成して、どこからでも実行できるようにします。

シバンの追加

スクリプトの解析時に使用するインタープリターをシェルが認識できるように、スクリプトの先頭にシバンを追加する必要があります。一般的には:

#!path/to/interpretter

マシン上のpythonインタープリターへのパスを見つけるには、次のコマンドを実行できます。

which python

これはPATHを検索して、python実行可能ファイルの場所を見つけます。それはあなたがあなたのシバンを形成するために使用できる絶対パスで戻ってくるはずです。 Shebangがpythonスクリプトの先頭にあることを確認してください:

#!/usr/bin/python

実行許可

スクリプトを実行権限でマークして、コマンドとして使用するときに実際に実行することをシェルが認識できるようにする必要があります。これを行うには、次のコマンドを実行できます。

chmod +x myscript.py

スクリプトをパスに追加します

PATH環境変数は、実行しようとしているコマンドを探すときにシェルが検索するディレクトリの順序付きリストです。したがって、pythonスクリプトをどこからでも実行できるコマンドにする場合は、PATHに含める必要があります。コマンドを実行しているパスの内容を見ることができます:

echo $PATH

これにより、各ディレクトリがセミコロンで区切られた長いテキスト行が出力されます。 PATHから実行している実行可能ファイルの実際の場所を知りたい場合は、次のコマンドを実行して見つけることができます。

which <commandname>

現在、2つのオプションがあります。スクリプトをPATHにすでにあるディレクトリに追加するか、新しいディレクトリをPATHに追加します。通常、ユーザーのホームディレクトリにディレクトリを作成し、PATHに追加します。パスに物事を追加するには、次のコマンドを実行できます。

export PATH=/my/directory/with/pythonscript:$PATH

これで、pythonスクリプトをコマンドとしてどこでも実行できるはずです。しかし!シェルウィンドウを閉じて新しいウィンドウを開くと、新しいウィンドウは、PATHに加えた変更を記憶しません。したがって、この変更を保存する場合は、.bashrcまたは.bash_profileの下部にそのコマンドを追加する必要があります

49
arajek

次の行を先頭に追加しますscript1.py

#!/usr/bin/env python

そして、スクリプトを実行可能にします:

$ chmod +x script1.py

スクリプトがPATH変数に表示されるディレクトリにある場合は、単に入力できます

$ script1.py

それ以外の場合は、絶対パスまたは絶対パスを指定する必要があります。これには、現在の作業ディレクトリが含まれます。これは、notPATHにある必要があります。

$ ./script1.py
11
chepner

hashbang を使用する必要があります。 pythonスクリプトの最初の行に追加します。

#! <full path of python interpreter>

次に、ファイルの許可を変更し、実行許可を追加します。

chmod +x <filename>

そして最後に

./<filename>

現在のディレクトリにある場合、

2
asheeshr