Linuxでは、通常、システムパッケージマネージャーを使用してインストールできるようにアプリケーションをパッケージ化します(たとえば、 UbuntuやRedHat.deb
などのDebianベースのディストリビューション用のファイル)。.rpm
これを実行する理由の1つ(多くのうち)は、依存関係の管理です。パッケージ内のパッケージマネージャーに、依存している他のパッケージを通知して、そうでない場合でもインストールできるようにすることができます。setuptoolsを使用してこれを行うことができます。これには多くのリソースがあります。この場合、コマンドラインツールがシステム全体にインストールされ、アプリケーションから呼び出すことができます。
これが不可能な場合は、必要なツールのソースコードを含めて、それらをコンパイルする方法をユーザーに指示することもできます(必要に応じて、アプリケーションディレクトリ内に)。最新のディストリビューションでは、これはかなり苦痛のないプロセスですが、正確にはベストプラクティスではありません。
別の注意:os.system
ブロッキングです。新しいプロセスを生成し、終了するのを待ちます。stdoutまたはstderrの出力を簡単に取得したり、操作したりすることはできません。subprocess
サブプロセスモジュールに単純化された(おそらく)より強力なインターフェイスを提供するモジュール( Pythonの標準ライブラリの一部)またはenvoy
(サードパーティモジュール)を調べる必要があります。
コマンドラインツールを「自動化」したい場合は、作業pexpect
がはるかに楽になります。