GNU/Linux >> Linux の 問題 >  >> Linux

実行時に Python モジュールをインストールしてインポートする方法は?

サブプロセスを使用する代わりに pip をインポートできます:

import pip

def install(package):
    pip.main(['install', package])

# Example
if __name__ == '__main__':
    try:
        import pexpect
    except ImportError:
        install('pexpect')
        import pexpect

別のテイク:

import pip

def import_with_auto_install(package):
    try:
        return __import__(package)
    except ImportError:
        pip.main(['install', package])
    return __import__(package)

# Example
if __name__ == '__main__':
    pexpect = import_with_auto_install('pexpect')
    print(pexpect)

[編集]

pip と一緒に requirements.txt を使用することを検討する必要があります。あなたはデプロイメントを自動化しようとしているようです (そしてこれは良いことです!)。私のツール ベルトには、virtualenvwrapper、vagrant、および ansible もあります。

これは私の出力です:

(test)[email protected]:~/test# pip uninstall pexpect
Uninstalling pexpect:
  /usr/lib/python-environments/test/lib/python2.6/site-packages/ANSI.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/ANSI.pyc
  /usr/lib/python-environments/test/lib/python2.6/site-packages/FSM.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/FSM.pyc
  /usr/lib/python-environments/test/lib/python2.6/site-packages/fdpexpect.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/fdpexpect.pyc
  /usr/lib/python-environments/test/lib/python2.6/site-packages/pexpect-2.4-py2.6.egg-info
  /usr/lib/python-environments/test/lib/python2.6/site-packages/pexpect.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/pexpect.pyc
  /usr/lib/python-environments/test/lib/python2.6/site-packages/pxssh.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/pxssh.pyc
  /usr/lib/python-environments/test/lib/python2.6/site-packages/screen.py
  /usr/lib/python-environments/test/lib/python2.6/site-packages/screen.pyc
Proceed (y/n)? y
  Successfully uninstalled pexpect
(test)[email protected]:~/test# python test.py
Downloading/unpacking pexpect
  Downloading pexpect-2.4.tar.gz (113Kb): 113Kb downloaded
  Running setup.py egg_info for package pexpect
Installing collected packages: pexpect
  Running setup.py install for pexpect
Successfully installed pexpect
Cleaning up...
<module 'pexpect' from '/usr/lib/python-environments/test/lib/python2.6/site-packages/pexpect.pyc'>
(test)[email protected]:~/test#

10.x 以上の pip バージョンを使用している場合、main はありません pip の関数 したがって、代替アプローチは import pip._internal as pip を使用しています import pip の代わりに のように:

パウロの回答を更新

import pip._internal as pip

def install(package):
    pip.main(['install', package])

if __name__ == '__main__':
    try:
        import pexpect
    except ImportError:
        install('pexpect')
        import pexpect

Linux
  1. Ubuntu20.04にpipをインストールする方法

  2. RockyLinux8にPIPPythonPackageManagerをインストールして使用する方法

  3. CentOS/RHEL 7 および 8 に pip パッケージをインストールする方法

  1. CentOS7にPipをインストールする方法

  2. Debian9にPIPをインストールする方法

  3. MacにPipをインストールする方法

  1. CentOS8にPipをインストールする方法

  2. RHEL 8 /CentOS8にpipをインストールする方法

  3. Ubuntu20.04にPythonPipをインストールする方法