GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie installiere und importiere ich Python-Module zur Laufzeit?

Sie können Pip importieren, anstatt den Unterprozess zu verwenden:

import pip

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

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

Eine andere Einstellung:

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)

[Bearbeiten]

Sie sollten erwägen, eine requirements.txt zusammen mit pip zu verwenden. Anscheinend versuchen Sie, Deployments zu automatisieren (und das ist gut so!), in meinem Werkzeuggürtel habe ich auch virtualenvwrapper, vagrant und ansible.

Dies ist die Ausgabe für mich:

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

Für diejenigen, die eine Pip-Version größer als 10.x verwenden, gibt es kein main Funktion für pip Der alternative Ansatz ist also die Verwendung von import pip._internal as pip statt import pip wie :

Aktualisierte Antwort von 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. So installieren Sie Pip unter CentOS 7

  2. So installieren Sie PIP unter Debian 9

  3. So installieren Sie Pip unter Ubuntu 20.04

  4. So installieren und verwenden Sie den PIP Python Package Manager unter Rocky Linux 8

  5. So installieren Sie das Pip-Paket in CentOS/RHEL 7 und 8

So installieren und verwenden Sie Python PIP-Tools unter Ubuntu 20.04 LTS

So installieren Sie Python 2 und Python 3 unter CentOS 8

So installieren Sie PIP in Ubuntu 20.04

So installieren Sie Python 3.x und PIP 3 auf Ubuntu 20.04 LTS

So installieren Sie Python Pip unter Ubuntu 19.04

So installieren Sie Python PIP unter Ubuntu 18.04