モジュールを実行する必要があることをユーザーに伝え、プログラムがユーザーのためにそれをインストールできるようにするpythonプログラムを用意する方法はありますか
5 に答える
ImportError 例外をキャッチして、プログラムに特定のモジュールが必要であることをユーザーに伝えることができます。
try:
import numpy as np
except ImportError:
print "This program requires numpy!"
print "Please download it from http://numpy.scipy.org/ and install it"
print "before running this program."
exit(1)
これは、ユーザーにとって不明確なバックトレースなしで、より適切な方法でプログラムを終了するための単なる方法であることに注意してください。モジュールが見つからない場合は、とにかく例外が発生します。
これは、python 標準ライブラリに含まれていないモジュールに対してのみ行う必要があります。
自動的にインストールしようとするのは得策ではありません。1 つ目は、セキュリティ リスク (マルウェアを広める大きな方法) であり、2 つ目は、オペレーティング システムやディストリビューションによって、ソフトウェア インストールの処理と登録の方法が異なるためです。
これはあなたの質問に正確に答えるものではありませんが、あなたがやりたいことに対する答えかもしれないと思います. 可能であれば、ユーザーがインストールしたモジュールを編集しないことをお勧めします。スクリプトを実行するためにそれらが必要な場合は、プログラムを .exe ファイルにバンドルするPyInstallerを検討する必要があります。
誰かのマシンを構成するためにセットアップ スクリプトを作成している場合、これは明らかに機能しませんが、それ以外の場合は良い考えです。
特定のモジュールをロードしようとする関数を作成し、それができない場合は、ユーザーが手動でダウンロードするように指示するか、モジュールを自動的にダウンロードするスクリプトを作成できます。
使用できます
import os
os.system('[sudo] [install whatever]')
必要なモジュールをインストールするには...管理者権限がまだない場合は、ユーザーに管理者パスワードの入力を求めます
http://forums.devshed.com/python-programming-11/running-bash-command-110687.html
編集:
以下の Matthew Trevor の提案に従って、この記事http://www.siafoo.net/article/77で説明されているように、依存関係を setup.py に追加することもできます。