Jun-20-2022, 05:51 PM
(Jun-19-2022, 02:50 AM)pnachtwey Wrote:(Jun-16-2022, 05:29 AM)Gribouillis Wrote: If you mean in the pip command line, you could replace it by something likeExcellent! Your code is probably better than mine which isn't using the latest tricks. I will study your code and try it out.
from pathlib import Path import subprocess as sp import sys with Path('req0.txt').open('w') as ofile: sp.run([ sys.executable, '-m', 'pip', 'list', '--outdated', '--exclude', 'idna', '--exclude', 'mistune', '--exclude', 'tomli', '--format=freeze', '--user'], stdout=ofile)
import os import subprocess cmd="pip list --outdated --exclude astroid --exclude idna --exclude mistune --exclude mccabe --exclude wrapt --format=freeze --user > req0.txt" os.system(cmd) in_file = open("req0.txt", 'r') out_file = open("req1.txt", 'w') while True: in_line = in_file.readline() if not in_line: break out_line = in_line.replace("==",">=") out_file.writelines(out_line) in_file.close() out_file.close() try: if os.path.getsize("req1.txt") > 0: os.system("pip install --user --upgrade -r req1.txt") os.system("pip list --outdated > o.txt") os.system("pip check >> o.txt") o_file = open("o.txt","r") while True: o_line = o_file.readline() if not o_line: break print(o_line.strip()) o_file.close() else: print("Nothing to update") except OSError as e: print("File does not exist")In any case. We have made improvements over the method at
https://www.activestate.com/resources/qu...-packages/
BTW, isn't there a better way of excluding packages than using --exclude package for each package?
I looked and couldn't find any.
@Gribouillis
edit, wait! I did see where you edit the lines and update the packages!
Does python have something like sed and xargs? I couldn't find that either.
I have a bash and zsh script where I use xargs. It is much cleaner than my Python script.
Should I put this in a separate thread?
pip list --outdated --format=freeze --exclude idna --exclude mistune --exclude mccabe --exclude pycurl --exclude PyGObject --exclude dbus-python --exclude pycairo | sed 's/==/>=/g'| xargs pip install --upgrade --user
pip list --outdated
pip check