[PYTHON] Die Pip-Liste endet nie.

Einführung

Ich habe Python 3.9 erstellt und installiert, um Python 3 auf Raspberry Pi Zero W zu aktualisieren. Als ich dann die Liste der installierten Pakete mit "pip list" überprüfte, stieß ich auf das Symptom, dass es gestoppt wurde, ohne eine Liste oder einen Fehler anzuzeigen. Nimmt es Zeit, weil es Null ist? Ich habe es für ein paar Stunden verlassen, aber es hat sich nicht geändert. Ich konnte die Antwort im Internet nicht finden, daher hier die Lösung.

Am Ende befindet sich ein zusätzlicher Hinweis. Die Hauptursache für dieses Symptom war, dass die Zufallszahl des Zufallszahlengenerators erschöpft war, indem ein Backup des Systems erstellt und nach dem Duplizieren oder Ändern des Hostnamens mit der SD-Karte gestartet wurde.

Symptome

Wenn ich die Liste der installierten Pakete mit "pip list" überprüfe, wird nichts angezeigt. Wenn Sie mit ^ C aufhören, werden die Debug-Informationen schlampig ausgegeben, und Sie können sehen, dass sie durch die Aufnahme von "self._config = {'authkey': AuthenticationString (os.urandom (32)) ..." beendet wurden.

Bestätigung

Starten Sie den interaktiven Modus mit "python3", geben Sie Folgendes ein. Wenn ein Fehler zurückgegeben wird, handelt es sich um dasselbe Symptom. (Ich habe vergessen, den Fehler aufzuzeichnen. Es war wie "Ressource vorübergehend nicht verfügbar")

>>> import os
>>> os.getrandom(1, flags=os.GRND_NONBLOCK)
b'\xf9'(Wenn dies in Ordnung ist. Wenn es ein Problem gibt, wird hier eine Fehlermeldung angezeigt.)

Gegenmaßnahmen

sudo mv /dev/random /dev/random.orig
sudo ln -s /dev/urandom /dev/random

Diese Gegenmaßnahmenmethode, die nichts mit Python oder Pip zu tun hat, war hilfreich. https://codz.me/2017/06/10/can-not-read-from-dev-random/

Nachtrag: Warum ist es passiert? Ist die Maßnahme angemessen?

Unmittelbar vor der Installation von Python 3.9 habe ich die Boot-SD-Karte gesichert, mit der duplizierten SD-Karte gebootet und den Hostnamen geändert. Anscheinend waren die Pseudozufallszahlen dabei erschöpft (oder initialisiert). Daher wurden beim Blockieren von Zufallswiederholungen Wiederholungen wiederholt, bis Zufallszahlen akkumuliert wurden. Die obige Gegenmaßnahme war eine Operation, um die Verwendung eines nicht gesperrten Zufallszahlengenerators zu erzwingen. Als Nebeneffekt können voreingenommene Zufallszahlen verwendet werden. Wenn es eine Weile betrieben wurde und genügend Zufallszahlen akkumuliert wurden, scheint es besser zu sein, zum ursprünglichen blockierenden Zufallszahlengenerator zurückzukehren. Referenz: https://ja.wikipedia.org/wiki//dev/random

Recommended Posts

Die Pip-Liste endet nie.
Installieren Sie den Befehl pip
Extrahieren Sie die Liste der Dienste in Azure
Pip installiert das GitHub-Repository
In der Liste verfügbare Methoden
Unterstützt die Warnung (DEPRECATION) der Pip-Liste
Informationen zur Grundlagenliste der Python-Grundlagen
Sortieren Sie die Liste, die das Diktat enthält