Pythonプログラムを直接実行する方法は?


13

Pythonプログラムを直接実行する方法は?

gedit で.pyファイル(たとえば、mnik.py)を作成しました。ターミナルでスムーズに実行されます。

コマンドが行く

python3 mnik.py

しかし、ファイルをクリックすると、geditで開かれます。クリックして直接実行することはできません。

何をすべきか?



4
@kasperd python3引数付きのコマンドラインでの入力は、Pythonスクリプトを実行する優れた方法です。実際には、ターミナルと引数を必要とするプログラムを実行する最も簡単な方法です(多くの独自のスクリプトだけでなく、などのプログラムも同様mercurialですsphinx)。私が20年以上やっていることが適切な方法ではない理由を説明することに注意してください?
アントン

3
@kasperd正確に記述されたPythonスクリプト(またはプログラム)には、シバンの行は必要ありません。そうでなければ、それはいまだにPythonスクリプトです。そのスクリプトは、あなたが好むと思われる短縮形のLinuxシェルからは実行できません。Pythonスクリプトにシェバン行をまったく必要とせず、ダブルクリックでスクリプトを開始できる環境もあります。
アントン

1
@kasperd Pythonスクリプトを使用./scriptnameして実行するためにカーネルが必要とするものは、コマンドラインからを使用してスクリプトを実行するという主張を検証しませんpython3。pythonスクリプトを実行するさまざまな方法があり、実行することpython3 ./mnik.pyも適切な方法です。それはまったく異なります(少なくとも、これまでの回答で最も可能性が高いpython2ではなくpython3を取得します)
Anthon

1
<language> <script>を使用することは、スクリプトを実行するための完全に有効で受け入れられている方法です。それが悪い習慣であることを示唆することは、眉をひそめるべきです。
ジェイコブVlijm

回答:


26

必要なものは2つあります。

  1. スクリプトには#!、使用するインタープリターをOSに伝える行が必要です。あなたの場合、コードの最初の行は#!/usr/bin/env python3
  2. ファイルマネージャーを開き、[編集]-> [設定]-> [動作]に移動し、実行可能ファイルの処理を選択する必要があります。

    ここに画像の説明を入力してください

    1. 最後に、ファイル自体に実際に実行権限が設定されていることを確認してください。ターミナルでできることchmod +x /path/to/script.py、GUIで、ファイルを右クリックし、そのプロパティ->パーミッションを変更します

    ここに画像の説明を入力してください

    ここに画像の説明を入力してください

シバンラインに関する注意

一番最初の行はシェバン行と呼ばれ、#!;で始まる必要があります。次に来るのは、コードを読み取るインタープリターの名前です。使用しているpython3場合は、どちらか#!/usr/bin/python3または #!/usr/bin/env python3移植性のために使用できます。Pythonバージョンに固有のコードを使用していない場合-を使用します#!/usr/bin/env python

スクリプト出力に関する注意:

スクリプトが出力をコンソールに出力する場合、ターミナルウィンドウが必要です。または、次のようなGUIダイアログを使用する必要があります。 zenityRun in Terminalコードを表示する場合は、オプションを使用することをお勧めします。コンソール出力を表示せずにスクリプトで何かを実行するRun場合は、オプションを使用します。

ここに画像の説明を入力してください

さらに、次のようなコマンドラインパラメーターがある場合 sys.argv[1]、スクリプト場合は、ターミナルウィンドウを開いていない限り設定できません。


1
@PriyadarshiPaulそれFilesはランチャーのプログラムと同じです。WindowsでMy Computer
言え

@PriyadarshiPaul nautilusターミナルにある
-grooveplex


3
#!/usr/bin/env pythonほとんどのUbuntuシステムでPython2を呼び出します。Python2と互換性のあるPython3用に記述されたPythonスクリプトを作成できますが、OPがそうしているとは思いません。#!/usr/bin/env python3より適切なシバンと思われる
Anthon

1
そして、なぜここでArch Linuxを立ち上げるのですか?たぶん少し意地悪に出くわすかもしれませんが、ここではUbuntuについて話します。Ubuntuでは、デフォルトでpythonはpython2.7にリンクされます。ソフトウェアを開発している場合は、OSのデフォルトバージョン以外のものを使用する場合は、どのリンクをどこにリンクするかを知っている必要があります。確かに、私たちは個々の質問に応えることができますが、大声で叫ぶために-あなたがコーディングした場合、それを正しく行います。
セルギーコロディアズニー

3

コードを実行するプログラムの場所を最初の行に配置し、そのアクセス許可を変更してスクリプトを実行可能ファイルとして実行するように設定する必要があります。これは、ターミナルまたは別のスクリプトからアプリケーションを起動していることを前提としています。

Pythonインストールを見つける

$ which python
/usr/bin/python

使用してプログラムの先頭行にプログラムの場所を追加#!前に

#!/usr/bin/python

# Python code goes here....

Pythonスクリプトに実行権限を設定します

$ chmod 700 test.py

これで、スクリプトを直接実行できます

$ ./test.py

test.pyのコードリスト

#!/usr/bin/python

print "test"

2

入力せずにこのプログラムを実行するpython3 mnik.py場合は、スクリプトを実行可能にし、それpython3が実行に使用されることを確認する必要があります。

実行することで最初にできること

 chmod +x mnik.py

2番目の方法は、スクリプトの最初の行として、python3を呼び出すシェバン行追加することで実行できます。python3に付属しているすべてのUbuntuシステムで、この行を先頭に追加してpython3を取得できます。

#!/usr/bin/env python3

これらの2つの変更の後/path/to/mnik.py、を入力する./mnik.pyか、単にmnik.py(後者では、スクリプトがPATHに含まれている必要があります)。

これらの変更を行う場合、名前mnik.pymnikに変更することを検討することもできます。これは、PyPIで公開されているコマンドを使用したPythonパッケージの一般的な方法です。


さて、これらのいずれも動作しません
Priyadarshi Paul

「OK」とは何ですか?「これら」とは何を指しますか?
アントン

** usr / bin / env:bad Interpreter:No
such

そこ/の前部に少なくとも行方不明があります。コメントに「それ」とは何かを説明してください。それはbashシェルですか?Windows Command.comですか?何からプログラムを呼び出し、どのコマンドライン構文を使用しますか?
アントン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.