Прикреплённый файл «BuildReq.py»

Загрузка

   1 #!/usr/bin/env python3
   2 '''
   3 Print modules that own files given
   4 '''
   5 
   6 import subprocess
   7 import json
   8 import os
   9 import sys
  10 
  11 Run = subprocess.Popen(["pip", "list", "--not-required", "--format=json"], stdout=subprocess.PIPE)
  12 Packages = {p['name'] for p in json.load(Run.stdout)}
  13 Files = {}
  14 Roots = set()
  15 
  16 for p in Packages:
  17     Run = subprocess.Popen(["pip", "show", "-f", p], text=True, stdout=subprocess.PIPE)
  18     dofiles = None
  19     for line in Run.stdout:
  20         if line.startswith("Location: "):
  21             root = line.split()[1].strip()
  22             Roots.add(root)
  23         elif dofiles:
  24             if line.startswith("  "):
  25                 Files[os.path.join(root, line.strip())] = p
  26         else:
  27             dofiles = line.startswith("Files:")
  28 
  29 if __name__ == "__main__" and len(sys.argv) > 1:
  30     Modules = {}
  31     os.environ["PYTHONVERBOSE"] = "import"
  32     Run = subprocess.Popen(sys.argv[1:], stderr=subprocess.PIPE, stdout=subprocess.DEVNULL, text=True)
  33     for line in Run.stderr:
  34         for r in Roots:
  35             match line.split():
  36                 case "#", _, "matches", fpath:
  37                     if (s := os.path.realpath(fpath)) in Files:
  38                         Modules.add(Files[s])
  39 
  40     print('requires = ["' + '", "'.join(sorted(Modules)) + '"]', file=sys.stderr)

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.