I built and installed Python 3.9 in an attempt to update Python 3 on my Raspberry Pi Zero W.
Then, when I checked the list of installed packages with pip list
, I encountered a symptom that it stopped without displaying a list or an error. Does it take time because it is Zero? I left it for a few hours, but it didn't change.
I couldn't find the answer on the internet, so I will describe the solution here.
There is an additional note at the end. The root cause of this symptom was that the random numbers in the random number generator were exhausted by making a backup of the system and booting it with the duplicated SD card or changing the host name.
When I check the list of installed packages with pip list
, nothing is displayed.
If you stop with ^ C, the debug information will come out in a sloppy manner, and you can see that it was terminated around the inclusion of self._config = {'authkey': AuthenticationString (os.urandom (32)) ...
.
Start interactive mode with python3
, enter the following, and if an error is returned, it is the same symptom. (I forgot to record the error. It was like `` `Resource temporarily unavailable```)
>>> import os
>>> os.getrandom(1, flags=os.GRND_NONBLOCK)
b'\xf9'(If this is okay. If there is a problem, you will get an error here)
sudo mv /dev/random /dev/random.orig
sudo ln -s /dev/urandom /dev/random
This countermeasure, which has nothing to do with python or pip, was helpful. https://codz.me/2017/06/10/can-not-read-from-dev-random/
Immediately before installing Python 3.9, I backed up the boot SD card, booted with the duplicated SD card, and changed the host name. Apparently, the pseudo-random numbers were exhausted (or initialized) in the process. Therefore, if it is a blocking random number, retries are repeated until random numbers are accumulated. The above countermeasure was an operation to force the use of an unlocked random number generator. As a side effect, biased random numbers can be used. After operating for a while and collecting enough random numbers, it seems that it is better to return to the original blocking random number generator. Reference: https://ja.wikipedia.org/wiki//dev/random