シェルから直接Pythonプログラムを実行するにはどうすればよいですか?


10

台本を書きました。起動しても停止せず、インターネットからデータを取得し続けます。私はそれをこのように呼ぶことができます:

cd /User/Desktop/project/internetScanner/
python3 main.py start

しかし、宛先内で次のようにターミナルから直接呼び出したいと思います:

internetScanner start

どうすればできますか?


2
タイトルはこの..上で変更することができたのだろうか
user606723

@ user606723変更を加えるために編集を提案してください。最初のタイトルは、「プログラムをシェルで実行できるようにする方法」です。あまり良くなかった。
slhck 2011

回答:


27

あなたはおそらく、あなたのファイルの名前を変更する必要がありmain.pyしますinternetScanner。* nixの拡張はオプションです。ここでは問題になりません。

mv main.py internetScanner

次に、このファイルの先頭に次の行を追加します。

#!/usr/bin/env python3

これにより、シェルがファイルを実行するときにpython3、コンテンツの解釈に使用することがわかります。これはシバンとして知られています。次に、ファイルを実行可能にします。

chmod +x internetScanner

これで、以下からプログラムを実行できます/User/Desktop/project/internetScanner/

./internetScanner start

プログラムはフォアグラウンドで実行され、Ctrl- を押すまで実行を続けますC。これが必要ない場合は、コマンドの後にアンパサンドを追加して、プログラムをバックグラウンドで開始することもできます。

./internetScanner start &

これでプログラムは実行されますが、シェルを引き続き使用できます。これはジョブ制御と呼ばれ、ここには簡単なチュートリアルがあります

あなたは今、システム上の任意の場所からプログラムを実行することができるようにしたい場合は、あなたが追加する必要がありinternetScanner、あなたにディレクトリをPATHどのようなPATHおよび他の環境変数であり、どのように私は設定したり、それらを使用することができますか?


いい答えです。私は彼がすることを追加することをお勧めしたいかもしれません、彼はそれを待つおよび/またはファイルに出力し、エラーストリームをリダイレクトしたくない場合はアンパサンド(&)でコマンドを終了します。
ベン・ホッキング2011

@BenHockingありがとう、私はそれを答えに加えました。
slhck 2011

X &プロセスを制御シェルから切り離しません。プロセスをバックグラウンドで実行するだけです。つまり、そのシェルが終了すると、TERMシグナルが送信されます。そのため、デタッチを使用したくない場合は、detach ./internetScanner start
Dan D.


$ PATHのどこかにmain.pyシンボリックリンクされている限り、名前を付けることができることに注意してくださいinternetScanner
jdd

2

他のファイル/User/Desktop/project/internetScanner/が不要であると想定して、シングルユーザー向けにインストールする場合は、(ln -smain.pyにリンクし$HOME/bin/internetScannerます。おそらく$HOME/bin最初にmkdirを実行する必要があります。

次回ログインしたときに、$HOME/binおそらくPATHに追加されます。すべてのユーザーが利用できるようにする場合は、にコピーし/usr/local/binます。

で実行する必要がある場合は/User/Desktop/project/internetScanner/、インポートosして呼び出すことから始めます。

os.chdir('/User/Desktop/project/internetScanner/') 

またはでランチャースクリプトを作成する$HOME/bin/usr/local/binを変更することを/User/Desktop/project/internetScanner/、スクリプトを実行します。


0

alias internetScanner "python /User/Desktop/project/internetScanner/main.py".aliasesファイルに入れます(cshの場合)。bashの場合はalias internetScanner="python /User/Desktop/project/internetScanner/main.py"、.bashrc に入れます。その後、どこからでもInternetScannerを使用できます。


.aliasesファイルについて聞いたことがありません。これはBashの標準ですか?それとも明示的にそれをあなたの中に調達する必要があります.bashrcか?
Kazark
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.