web-dev-qa-db-ja.com

「python ...」と入力せずにpythonスクリプトを実行する方法

私はシェルで毎回明示的に「python」を呼び出す必要なしにpythonスクリプトを実行したい。Shebang#!/ path/to/pythonを追加しようとしたが、これはしない動作しているように見えます。

38
Martin08

Shebangを追加する必要があります。

#!/usr/bin/env python

次に、スクリプトを実行可能にします。

chmod +x foo

その後、他の実行可能ファイルと同様に実行できます。

./foo

また、Homer6からのメモ:Windowsでファイルを編集してLinuxで呼び出すと、不可解な「No such file or directory」エラーが発生する場合があります。これは、行の行末がLFではなくCRLFになっているためです。それらをLFに変換すると、スクリプトは期待どおりに実行されます。 Notepad ++>表示>シンボルを表示>行末を表示してEOL文字を表示します。また、Notepad ++>編集> EOL変換> Unix形式を使用して、すべての行末をLFに変換します。または、ほとんどのLinuxシステムにあるdos2unixツール(dos2unix foo.py)を使用できます。

97
David Wolever

これは実際には個人のスクリプトには適用されませんでしたが、beetsを引用しているように、パッケージを配布するときにこのアクションを自動化することもできることに注意してください。 setuptools _entry_point_ オプション。
したがって、myModuleのようなパッケージを配布し、コンソールでmymodulescriptと入力してmain_function()関数にアクセスできるようにしたい場合は、おそらく次のようなものを追加します。これを_setup.py_ファイルに:

_setup(
    # your other arguments ..
    entry_points={
        'console_scripts': [
            'mymodulescript = myModule:main_function'
        ]
    }
)
_
3
mgc
  1. スクリプトの先頭に行を追加します。

    #! /usr/bin/env python
    
  2. スクリプトの名前をscript_name.pyからscript_nameに変更します
  3. スクリプトを実行可能にします:chmod +x script_name

上部の行は、プロンプトでpythonと入力したときに取得するものと同じpythonを選択します。直接パスを指定することもできます。

#!/opt/python/3.6/bin/python
3
Anthon

別の回避策は、.bashrcで定義されたエイリアスを使用することです。

例えば.bachrcファイルに次の行を追加します。

alias mypythonalias = "python mypyrhonfile.py"

ターミナルで入力:

source ~/.bashrc

そして、あなたは単に入力することができます:

mypythonalias

pythonファイルを実行します。

2
Tassos Pan

端末で/ path/to/pythonを実行できることを確認します。また、pythonファイルの実行許可を与えていることを確認してください。ファイルの許可を与えるには、

chmod +x mypythonfile.py
1