Ricerca…


introduzione

A volte potrebbe essere necessario utilizzare il gestore di pacchetti pip all'interno di python ad es. quando alcune importazioni possono generare ImportError e si desidera gestire l'eccezione. Se si scompatta in Windows Python_root/Scripts/pip.exe all'interno viene memorizzato il file __main__.py , dove viene importata la classe main dal pacchetto pip . Questo significa che il pacchetto pip viene utilizzato ogni volta che si utilizza pip eseguibile. Per l'utilizzo di pip come eseguibile, consultare: pip: PyPI Package Manager

Sintassi

  • pip. <function | attribute | class> dove function è una delle seguenti:
    • completamento automatico ()
      • Comando e completamento dell'opzione per il parser dell'opzione principale (e le opzioni) e relativi sottocomandi (e opzioni). Abilita procurando uno degli script di shell di completamento (bash, zsh o fish).
    • check_isolated (args)
      • param args {lista}
      • restituisce {booleano}
    • create_main_parser ()
      • restituisce {pip.baseparser.ConfigOptionParser object}
    • principali (args = None)
      • param args {lista}
      • restituisce {intero} Se non è fallito, restituisce 0
    • parseopts (args)
      • param args {lista}
    • get_installed_distributions ()
      • restituisce {elenco}
    • get_similar_commands (nome)
      • Il nome del comando è auto-corretto.
      • nome parametro {stringa}
      • restituisce {booleano}
    • get_summaries (ordinato = True)
      • Rende ordinate (nome del comando, riepilogo del comando) tuple.
    • get_prog ()
      • restituisce {string}
    • dist_is_editable (dist)
      • La distribuzione è un'installazione modificabile?
      • param dist {oggetto}
      • restituisce {booleano}
    • commands_dict
      • attributo {dizionario}

Esempio di utilizzo di comandi

import pip

command = 'install'
parameter = 'selenium'
second_param = 'numpy' # You can give as many package names as needed
switch = '--upgrade'

pip.main([command, parameter, second_param, switch])

Solo i parametri necessari sono obbligatori, quindi sia pip.main(['freeze']) che pip.main(['freeze', '', '']) sono accettabili.

Installazione batch

È possibile passare molti nomi di pacchetti in un'unica chiamata, ma se un aggiornamento / installazione fallisce, l'intero processo di installazione si interrompe e termina con lo stato '1'.

import pip

installed = pip.get_installed_distributions()
list = []
for i in installed:
    list.append(i.key)

pip.main(['install']+list+['--upgrade'])

Se non vuoi fermarti quando alcune installazioni falliscono, chiama l'installazione in loop.

for i in installed:
        pip.main(['install']+i.key+['--upgrade'])

Gestire l'eccezione di ImportError

Quando si usa il file python come modulo non è necessario controllare sempre se il pacchetto è installato ma è comunque utile per gli script.

if __name__ == '__main__':
    try:
        import requests
    except ImportError:
        print("To use this module you need 'requests' module")
        t = input('Install requests? y/n: ')
        if t == 'y':
            import pip
            pip.main(['install', 'requests'])
            import requests
            import os
            import sys
            pass
        else:
            import os
            import sys
            print('Some functionality can be unavailable.')
else:
    import requests
    import os
    import sys

Forza installazione

Molti pacchetti, ad esempio sulla versione 3.4, funzionerebbero su 3.6, ma se non ci sono distribuzioni per piattaforma specifica, non possono essere installati, ma c'è una soluzione alternativa. Nella convenzione di denominazione dei file .whl (conosciuta come ruote) è possibile decidere se è possibile installare il pacchetto sulla piattaforma specificata. Per esempio. scikit_learn‑0.18.1‑cp36‑cp36m‑win_amd64.whl [ scikit_learn‑0.18.1‑cp36‑cp36m‑win_amd64.whl ] - [versione] - [interprete python] - [interprete python] - [Sistema operativo] .whl. Se il nome del file wheel viene modificato, quindi la piattaforma non corrisponde, pip tenta di installare il pacchetto anche se la versione platform o python non corrisponde. Rimuovendo la piattaforma o l'interprete dal nome, si verificherà un errore nell'ultimo verso del modulo pip kjhfkjdf.whl is not a valid wheel filename. .

In alternativa, il file .whl può essere decompresso utilizzando un archiviatore come 7-zip. - Di solito contiene la cartella meta di distribuzione e la cartella con i file di origine. Questi file sorgente possono essere semplicemente decompressi nella directory site-packges meno che questa rotella non contenga script di installazione, in tal caso, deve essere eseguita per prima.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow