This info was incredibly helpful to me, but I wanted something slightly more automated, so I made a bit of a python/shell scripting, since I’m pretty novice to shell and couldn’t write it all in shell. (Note: this is for updating packages via PyPi only)
This is my
#! /bin/bash # Change python version below from 3.10 to whatever your current version is pip list --path $HOME/.local/lib/python3.10/site-packages/ > .pip-lst.txt python3 Pip-update.py .pip-lst.txt tr '\n' '\0' < .pip-adj.txt | xargs -r -0 pip install -U rm -f .pip-lst.txt .pip-adj.txt
The output from
pip list is manipulated via a python script that makes a new file with just the package names, one per line. The script then takes the lines and feeds them individually to
pip install -U.
# Pip-update.py import sys file = open(sys.argv,'r') vfile =  for i in file: vfile.append(i) file.close() vfile = vfile[2:] vfile_adj =  for i in vfile: index = 0 while (i[index] != ' '): index = index + 1 vfile_adj.append(i[:index]) new_file = open('.pip-adj.txt','w') for i in vfile_adj: new_file.writelines(i) new_file.writelines('\n') new_file.close()
After saving both files, just run
Or whatever you named the shell script. Remember to rename the python script inside
pip-update.sh in case of changes.
The only problem is that I couldn’t automate the picking of pathname given the current python version in the system, so it needs changing, e.g, from
When python 3.11 comes out. Of course, it shouldn’t be too hard to get this part of the code done, or to port it all to shell. But just in case someone finds it useful, I decided to post the code anyway.