GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et importer des modules Python lors de l'exécution ?

Vous pouvez importer pip au lieu d'utiliser un sous-processus :

import pip

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

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

Autre prise :

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)

[modifier]

Vous devriez envisager d'utiliser un requirements.txt avec pip. On dirait que vous essayez d'automatiser les déploiements (et c'est bien !), dans ma ceinture à outils, j'ai aussi virtualenvwrapper, vagrant et ansible.

Voici le résultat pour moi :

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

Pour ceux qui utilisent une version de pip supérieure à 10.x, il n'y a pas de main fonction pour pip donc l'approche alternative utilise import pip._internal as pip au lieu de import pip comme :

Réponse mise à jour de 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. Comment installer Pip sur CentOS 7

  2. Comment installer PIP sur Debian 9

  3. Comment installer pip sur Ubuntu 20.04

  4. Comment installer et utiliser PIP Python Package Manager sur Rocky Linux 8

  5. Comment installer le package pip dans CentOS/RHEL 7 et 8

Comment installer et utiliser les outils Python PIP sur Ubuntu 20.04 LTS

Comment installer Python 2 et Python 3 sur CentOS 8

Comment installer PIP dans Ubuntu 20.04

Comment installer Python 3.x et PIP 3 sur Ubuntu 20.04 LTS

Comment installer Python Pip sur Ubuntu 19.04

Comment installer Python PIP sur Ubuntu 18.04