That story has a bit of a tail.
If you use pip packages to manage your own app, you commonly do sth like
pip freeze > requirements.txt
to keep the versions locked. If you update the versions, your app might break.
It is possible but uncommon to install pip packages outside of venv or pyenv, because different apps come with different versions of dependencies (requirements.txt).
Most often pip is used (if you dont code in py yourself), when you download something from github thats written in py. In this case you shouldnt use your system's pip (as in pip without venv or pyenv). with those apps, you install the required pip packages via
pip3 install -r requirements.txt
, and to upgrade them you run
git pull; pip3 install -r requirements.txt
inside the git repo of the app you use.
When you install pip packages system wide, then your approach is ok, and you should most likely setup a cronjob (or systemd timer) to do that for you.
As for upgrade all, even without a venv or pyenv, this would be a way to go too:
Code:
pip freeze > requirements.txt
pip install -r requirements.txt --upgrade