.py拡張子なしでターミナルからPythonスクリプトを実行する


14

scriptと入力するだけで、ターミナルからpythonスクリプトscript.pyを呼び出したいです。これは可能ですか?もしそうなら、どのように?

#!/ usr / bin / env pythonをスクリプトの先頭に追加することでpython script.pyを入力しないようにできることはわかっていますが、スクリプトを実行するにはサフィックス.pyを追加する必要があります。

回答:


21

Unix / Linuxファイルシステムは、Windowsのように拡張機能に依存しません。.pyファイルの最後にそれを実行する必要はありません。

インタープリターでファイルを呼び出すことにより、ファイルを実行できます。

python ScriptFile

または、実行可能としてマークし、最初の行でインタープリターを定義することにより(例:)#!/usr/bin/python

次を使用してファイルを実行できない場合:

/Path/to/ScriptFile

権限を確認してください

ls -l ScriptFile

実行可能フラグを追加する必要がある場合がありchmodます。これにより、実行可能フラグが実行されます。

カスタムスクリプトを定期的に使用している場合は、保存するディレクトリがPATH環境変数に追加されていることを確認する必要があります。


1
ファイルは〜/ workspace / pythonにあります。〜/ workspace / pythonをパスに追加し、sudo chmod a + x script.py "を実行し、スクリプトの先頭にshebang行(#!/ usr / bin / env python)を追加しました。私はscript.py *タイピングしてスクリプトを実行することができますが、ちょうどタイピングのスクリプトは仕事をしません。
jmau5

2
unix / linuxでは、すべてがファイルであり、そのファイル名に応答します。Script.pyをスクリプトとして呼び出すことはできません。ファイルの名前をscript.pyからscriptに変更してみてください。問題が解決するはずです。
パトリック

申し訳ありませんが、私は誤解しました!すべて解決しました、ありがとう!
jmau5

5

.pyスクリプトを実行するには、拡張子は不要です。スクリプトを実行可能にする(たとえば、実行するchmod a+x script)だけで、shebang行(#!/usr/bin/env python)を追加する必要があります。


パトリックの返信に対する私のコメントをご覧ください。
jmau5

4

オプションとして、スクリプト(.pyファイル)のラッパーを作成できます。

たとえば、スクリプトを持っているrunme.pyので、新しいファイルrunmeを作成してスクリプトをラップできます。

#!/usr/bin/env python
import runme

その後、呼び出すrunme.pyだけで呼び出すことによって機能をrunmeシェルに。

これはマルチプラットフォームスクリプトに役立ちます。Windowsプラットフォームでは、ヘッダーに.py拡張子やシェバンを付けずに名前で呼び出すファイルを割り当てることができますが、Linuxプラットフォームではできないため、ラッパーが出力されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.