2017-02-19 9 views
0

hellp.py pythonファイルがあるとします。 python hello.pyを実行してコマンドラインを実行することができますが、システムでhellp.pyファイルを実行できるように。/helloと入力するだけでどのように入力できますか?Linuxシステムで./helloを使用してPythonファイルを直接実行するための.shファイルの作成方法

+0

エントリポイントに '.py'拡張子を使用しないでください。ライブラリ/モジュールではなく*実行可能*です。 setuptools(setup.py)を使用している場合は、Pythonスクリプトをすべて実際に使用したい場合は、選択したモジュールで任意の関数を呼び出すエントリポイントを生成する作業を行うことができますライブラリは本質的にはそうですが、それはあなたが本当に必要としている、あるいはしたいことではないでしょう(そして、setuptoolsで生成されたエントリポイントはそれ自体がPythonスクリプトであり、シェルスクリプトではなくどこでもシェルスクリプトは必要ありません)。 –

+0

ところで、これは非常にXY問題であると主張したいと思います(「私はXをやりたがっていますが、Yのやり方を尋ねています」 - 実行してPythonプログラムを実行するだけです'/ hello';シェルスクリプトが適切かつ適切な方法であれば、質問に答えた人にそれを指摘させてください。そのような仮定を質問自体に組み込む必要はありません。 –

答えて

2

Pythonスクリプトを実行可能ファイルとして実行する場合は、右のシバンを.pyファイルの先頭に置きます。例えば、hello.pyのように定義されることがあります。

$ chmod u+x hello.py 

あなたが./hello.pyを実行すると、現在のインタプリタ:

#!/usr/bin/env python 

print('hello, world!') 

次に、あなたは、実行権限がファイルに設定されていることを確認する必要がありますPATH(1つが起動されている場合はvirtualenv内の1つを含む)は、Pythonスクリプトを実行します。

PyInstaller、Py2App、Py2Exeなどのツールでこれを行う方法はほかにもありますが、これはあなたが探しているものだと思います。

EDIT:コマンドラインで./helloと入力するだけです。これに取り組むにはいくつかの方法があります。最初に、単にファイル拡張子を打ち消して、単にPythonファイルの名前をhelloとします。 2番目の方法(と私がお勧めする方法)は、ファイルへのリンクを作成することです。シンボリックリンクを作成することをおすすめします:

$ ln -s hello.py hello 

このように、コードは明らかにPythonファイルですが、便利にアクセスできます。

+1

Re: '.py'拡張子を持たないエントリーポイントを設定するのは間違いなく、おそらくベストプラクティスです(確かに、Windowsを含むPythonがサポートするプラットフォーム間で動作するもの)は、http:// python-packagingというsetuptoolsエントリポイントメカニズムを使用しています。 readthedocs.io/en/latest/command-line-scripts.html - パッケージされたプログラムがインストールされた後、選択したモジュールから目的の関数を呼び出すスクリプトがユーザのPATHに配置されます。 –

+0

ええ、 'setuptools'は素晴らしいです。私は、言語を使い始めたばかりの人、あるいは小さなスクリプトを書いている人(Askerがやっていると思う)のように、 'setup.py'を使用してそれをvirtualenvまたはシステムサイトパッケージにインストールする際のオーバーヘッドが少し過度のことである。 Setuptoolsは素晴らしい選択肢であり、本番環境に保守または公開する必要のあるものには絶対におすすめです。 – Andrew

関連する問題