web-dev-qa-db-ja.com

必要なモジュールを自動的にインストールする必要がありますか?

おじいちゃんのためのプログラムを書いています。場合によっては、アップデートで、自分のコンピューターにインストールされていない新しいモジュールが必要になります。毎回新しいモジュールを手動でインストールする必要はありませんが、彼はそれを理解するのに十分な技術に精通していません。

ImportErrorsを確認し、エラーメッセージからモジュールをインストールしてもよいですか?そうでない場合、代替手段は何ですか?

1
spelchekr

これがパッケージマネージャーの仕事です。 Pythonの場合: pip

ビルドしているライブラリをパッケージ化し、その依存関係を指定した場合、ユーザー(おじいちゃん)は次のように実行するだけです。

$ pip install --upgrade <name-of-package>

リリースした最新バージョンとそのすべての依存関係を取得します。コードをオンラインで公開したくない場合は、pipをローカルソースからインストールすることもできます。

$ pip install zipped_package_emailed_to_grandpa.Zip

または、reallyこれを単一の(Python 3.4+)スクリプトにパッケージ化する必要がある場合は、以下からpipを呼び出すことができます。

#!/usr/bin/env python3

def main():
   ...

if __name__ == '__main__':
    import sys, subprocess
    dependencies = ['dep_1', 'dep_2']
    subprocess.call([sys.executable, '-m', 'pip', 'install'] + dependencies)
    import dep_1, dep_2
    main()

しかし、これは絶対に珍しいことです。

3
Jace Browning