2017-02-03 7 views
1

私はpythonパッケージをコマンドラインから実行可能にしたいと思っています。コマンドラインからパッケージを実行可能にする方法は?

./myfile.pyを使用して1つのファイルを実行可能にするには、chmod +x myfile.pyここでmyfile.pyは、#!/usr/bin/envで始まります。私はまた__main__.pyを含むパッケージを実行するためにpython -m mypackageを行うことができることを知っています。私は、パッケージの__main__.pyにシェバング行を追加chmod +x mypackageを実行して、./mypackageをしようとした場合

はしかし、私はエラー-bash: ./mypackage: Is a directoryを取得します。

このようなパッケージを実行することはできますか?

+0

ディレクトリではなく*ファイル*を実行する必要があります。 ./mypackage/__main__.pyを実行するとどうなりますか? Pythonはメインプログラムを見つける方法を知っているかもしれませんが、Linuxシェルは見つからないでしょう。 – Prune

+2

*このようなパッケージは実行できますか?* <=いいえ。しかし、なぜシェルスクリプトをドロップしないのですか? – dhke

+2

[setuptools 'console_scripts'エントリポイント](http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html#the-console-scripts-entry-point)を調べるとよいでしょう。 )。 *(あなたのパッケージは適切な 'setuptools'ディストリビューションで、' setup.py'などを使っていると仮定します)* –

答えて

0

(py2exeのようなものを探しているが、明確にするために、私はないそれスタンドアロンの実行可能ファイルにする。私はまだそれを解釈することを期待しています、私はちょうど打ち上げ簡素にしたいです)短い答えはいいえです。

mypackageはディレクトリとディレクトリが既にフラグを実行する(あるいはあなたが自分のファイルを一覧表示することができません)があるので、あなたがchmod +x mypackageあなたが何もしないされます。入力した場合:ls -lが表示されます。

パッケージをインストールせずに直接実行するオプションは、すでに言及した通りです:python -m mypackage、またはそれを実現するシェルスクリプトを作成します。

pythonを前面に指定せずにアプリケーションを起動させるだけで、アプリケーションをグローバルにインストールしないようにするには、./somethingとアプリケーションを実行することをお勧めします。最も簡単な方法は、あなたのパッケージを起動するシェルスクリプトを置くことです。

関連する問題