2016-04-29 6 views
1

私はPythonツールを開発します。各ツールは、プログラムを起動するためのソースファイルとスクリプトを含むプログラミングプロジェクトの一部です。ここでは言語はPythonですが、他の言語でも構いません。設定環境でのPythonプロジェクトの整理

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; uses modules; starts workflow. 
    program2.py 
    pylauncher.sh # sets environment; deals with output; calls any specified python script. 

各Pythonスクリプトは、ユーザーの入力を受け取り、提供された引数を解析し、関連するPythonモジュールを使用してルーチンを開始します。私は、

$ cd path/scripts 
$ python program1.py arg1 arg2 

または、インタプリタのバージョンに応じて、

$ cd path/scripts 
$ path/to/the/right/python program1.py arg1 arg2 

現在、私はまた、bashスクリプトを持って、pylauncher.sh:最後にユーザーが単にスクリプトをこのように呼び出す必要がありますPythonパスの設定、Pythonライブラリの設定、入力のログへのリダイレクトなどを行います。したがって、ユーザーは、このすべてを指定する必要があり、コマンドを起動する必要がありません。それは、ユーザーからの環境のものを隠すよう

$ cd path/scripts 
$ ./pylauncher program1.py 

これは便利です。しかし、おそらく、ユーザーはランチャーを呼び出すことに煩わされるべきではないと私には思われます。ですから、私はpythonスクリプトprogram {1,2} .pyを取り除き、プログラム{1,2} .shにpylauncher.shの名前を変更することを考えています。そうすることで、前のプログラム{1,2} .pyで使用されていたルーチンは、モジュールのメイン関数に転送されるか、単にそこに移動されます。

src/ 
    package1/ 
    module1.py 
    program1.py # parses arguments; use python modules; starts the program workflow. 
    package2/ 
    module2.py 
    program2.py 
scripts/ 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

やスクリプトフォルダ内のプログラムをさせる{1,2}の.py:

プロジェクト構造は次のようになり

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; starts the program workflow. 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

ユーザー最後に使用しなければならないでしょう次のコマンド:

$ cd path/scripts 
$ ./program1.sh 

私は現在、pylauncherのbashスクリプトで最初のソリューションを使用していますが、私は第二の解決策に変わることを考えています。しかし、私は他のソフトウェア開発者の習慣、習慣、習慣について知りたいと思います。あなたはどうしますか?可能であれば、冗長性を避けるために、ユーザーにとって、開発者にとってより便利な方法がありますか?アドバイスや批評家を歓迎します。

答えて

1

これらのツールを1つのファイルの実行可能ファイルとしてパッケージングしたことがありますか?

私はpyinstallerを使っているのですが、私はLinuxシステムを使っていますが、ツールはクロスプラットフォームであり、よく書かれています。

要件

[email protected]|/tmp/python-executable » cat hello.py 
#!/usr/bin/env python 

if __name__ == '__main__': 
    print 'hello world' 

使用を構築するために

sudo apt-get install python-dev python-pip 
sudo pip install pyinstaller 

ファイルを(建物やPIPのためのPythonのヘッダはパッケージをインストールする)

(-Fフラグは、単一のファイルの実行可能ファイルを作成するためにpyInstallerの指示します)
[email protected]|/tmp/python-executable » pyinstaller -F hello.py 
[email protected]|/tmp/python-executable » ./dist/hello 
hello world 

doc

答えのための10の
+0

感謝。私はまだpyinstallerの使用を検討していません。 Pythonの独占的なプロジェクトにとっては興味深いかもしれません。今のところ、私はプロジェクトを組織する一般的な方法を探しています。 – kaligne

+0

@kaligneああ、これはPythonの独占プロジェクトだと思っていましたが、元の質問のいくつかの点を明確にして、より良い回答を得たいと思うかもしれません:) – kalvatn

+0

はい、結局のところ申し訳ありません。私はpythonタグを削除する必要がありますか? – kaligne