私はPythonアプリケーションを持っていますが、パッケージ化についての質問がありますが、これは実際にはdistutilsの質問ではなく、コマンドラインから簡単に使用できるようにアプリケーションを整理および設定する方法についての質問です。
アプリケーションに1つのパッケージが含まれていると仮定し、今のところ、必ずしもそれをdistutilsパッケージにしたくないと仮定します(ただし、私は思いとどまる可能性があります)。
pass_persistを使用してNet-SNMPによって実行されるSNMPサブエージェントとしてのプログラム自体。これは質問にとって特に重要ではありません。プログラム全体が実行され、stdoutの応答とともにstdinを読み取ることを意味します。
さらに、エージェントが多かれ少なかれ標準的なPython形式で構造化されていると仮定します
agent
__init__.py
main.py
<other modules at the same level>
main.py
のような単純なプログラムです
#!/usr/bin/env python
import sys
def main(argv):
<initialize the environment, input output, logging and so on>
while <not done>:
<process an input>
<clean up and terminate>
if __name__ == '__main__':
main(sys.argv)
これを実行するように編成する方法はいくつかあるようです。
パッケージをサイトパッケージのどこかに配置し、PATHに次のようなトップレベルのプログラムを配置します。
#!/usr/bin/env python
from agent import main
main(sys.argv)
パッケージディレクトリをどこかに置き、を使用して実行します
/path/to/directory/agent/main.py
(bumpoバージョンでは、エージェントディレクトリをパスのどこかに配置して、実行できるようにしますmain.py
)
または、コードをインストールして、わからないものをパスに直接配置できる、よりPythonicでクールな3番目のメソッド。
グーグルはあまり役に立たなかった、私はこれがそれらの「答えるにはあまりにも馬鹿げている」質問の1つであると思う。残念ながら、私はそれを知るにはあまりにも愚かです。