Zoeken…


Invoering

Soms moet u bijvoorbeeld pip-pakketbeheer gebruiken in Python. wanneer sommige invoer ImportError kan verhogen en u de uitzondering wilt verwerken. Als u uitpakt op Windows Python_root/Scripts/pip.exe in het __main__.py bestand opgeslagen, waar main hoofdklasse uit het pip pakket wordt geïmporteerd. Dit betekent dat het pip-pakket wordt gebruikt wanneer u het uitvoerbare pip-bestand gebruikt. Voor gebruik van pip als uitvoerbaar, zie: pip: PyPI Package Manager

Syntaxis

  • pip. <function | attribute | class> waarbij de functie een van de volgende is:
    • automatisch aanvullen ()
      • Opdracht- en optie-voltooiing voor de hoofdoptie-parser (en opties) en de bijbehorende subopdrachten (en opties). Schakel dit in door een van de voltooiingsshellscripts (bash, zsh of fish) te zoeken.
    • check_isolated (args)
      • param args {list}
      • geeft {boolean} terug
    • create_main_parser ()
      • retourneert {pip.baseparser.ConfigOptionParser object}
    • main (args = None)
      • param args {list}
      • retourneert {geheel getal} Retourneert indien niet 0
    • parseopts (args)
      • param args {list}
    • get_installed_distributions ()
      • geeft {lijst} terug
    • get_similar_commands (naam)
      • Opdrachtnaam automatisch corrigeren.
      • param naam {string}
      • geeft {boolean} terug
    • get_summaries (besteld = True)
      • Opbrengsten gesorteerde (opdrachtnaam, opdrachtoverzicht) tupels.
    • get_prog ()
      • geeft {string} terug
    • dist_is_editable (dist)
      • Is distributie een bewerkbare installatie?
      • param dist {object}
      • geeft {boolean} terug
    • commands_dict
      • attribuut {woordenboek}

Voorbeeld van gebruik van opdrachten

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])

Alleen de benodigde parameters zijn verplicht, dus zowel pip.main(['freeze']) als pip.main(['freeze', '', '']) zijn acceptabel.

Batch installeren

Het is mogelijk om veel pakketnamen in één gesprek door te geven, maar als een installatie / upgrade mislukt, stopt het hele installatieproces en eindigt het met status '1'.

import pip

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

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

Als u niet wilt stoppen wanneer sommige installaties mislukken, belt u de installatie in loop.

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

Omgaan met ImportError-uitzondering

Wanneer u het python-bestand als module gebruikt, hoeft u niet altijd te controleren of het pakket is geïnstalleerd, maar het is nog steeds nuttig voor scripts.

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

Installatie forceren

Veel pakketten bijvoorbeeld op versie 3.4 zouden prima op 3.6 werken, maar als er geen distributies zijn voor een specifiek platform, kunnen ze niet worden geïnstalleerd, maar er is een oplossing. In .whl-bestanden (bekend als wielen) bepaalt de naamgevingsconventie of u het pakket op een specifiek platform kunt installeren. Bijv. scikit_learn‑0.18.1‑cp36‑cp36m‑win_amd64.whl [ scikit_learn‑0.18.1‑cp36‑cp36m‑win_amd64.whl ] - [versie] - [python-interpreter] - [python-interpreter] - [Besturingssysteem] .whl. Als de naam van het wielbestand wordt gewijzigd, dus het platform komt overeen, probeert pip het pakket te installeren, zelfs als de platform- of python-versie niet overeenkomt. Het verwijderen van het platform of de tolk uit de naam zal een fout veroorzaken in de nieuwste versie van kjhfkjdf.whl is not a valid wheel filename. .

Als alternatief kan het .whl-bestand worden uitgepakt met behulp van een archiver als 7-zip. - Het bevat meestal distributie meta-map en map met bronbestanden. Deze bronbestanden kunnen eenvoudig worden uitgepakt in de map site-packges , tenzij dit wiel installatiescript bevat, zo ja, dan moet het eerst worden uitgevoerd.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow