GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e importare i moduli Python in fase di esecuzione?

Puoi importare pip invece di utilizzare subprocess:

import pip

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

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

Un'altra ripresa:

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)

[modifica]

Dovresti prendere in considerazione l'utilizzo di un requirements.txt insieme a pip. Sembra che tu stia cercando di automatizzare i deployment (e questo va bene!), nella mia cintura degli attrezzi ho anche virtualenvwrapper, vagrant e ansible.

Questo è l'output per me:

(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#

Per coloro che utilizzano una versione pip maggiore di 10.x, non esiste main funzione per pip quindi l'approccio alternativo è usare import pip._internal as pip invece di import pip come :

Risposta aggiornata di Paulo

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. Come installare Pip su CentOS 7

  2. Come installare PIP su Debian 9

  3. Come installare pip su Ubuntu 20.04

  4. Come installare e utilizzare PIP Python Package Manager su Rocky Linux 8

  5. Come installare il pacchetto pip in CentOS/RHEL 7 e 8

Come installare e utilizzare gli strumenti Python PIP su Ubuntu 20.04 LTS

Come installare Python 2 e Python 3 su CentOS 8

Come installare PIP in Ubuntu 20.04

Come installare Python 3.x e PIP 3 su Ubuntu 20.04 LTS

Come installare Python Pip su Ubuntu 19.04

Come installare Python PIP su Ubuntu 18.04