Python Shutil.copytree: [WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессPython

Программы на Python
Anonymous
Python Shutil.copytree: [WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процесс

Сообщение Anonymous »

На GitHub я делюсь exe-файлом, сгенерированным PyInstaller (file1.exe). Идея заключается в автоматическом процессе обновления при наличии новой версии файла. При каждом запуске file1.exe программа проверяет наличие новой версии на GitHub:

Код: Выделить всё

response = requests.get("https://api.github.com/repos/...releases/latest")
latestVersion = response.json()["tag_name"]
Если последняя версия новее текущей, появится окно сообщения с вопросом, следует ли применить обновление.
Моя идея — зарегистрировать функцию atexit, которая запускает другой скрипт Python (updateloader.exe) в качестве подпроцесса, который загружает новую версию с GitHub и копирует ее в папку file1.exe (перезаписывает file1.exe):
file1:< /p>

Код: Выделить всё

...
atexit.register(updateloader)
sys.exit()
...
def updateloader():
subprocess.run("updateloader.exe")
updateloader.exe:

Код: Выделить всё

...
shutil.copytree("C:\Users\xy\Downloads\file1.exe", "C:\Users\xy\folder\file1.exe", dirs_exist_ok=True)

Я получаю следующее исключение:
('C:\Users\xy\Downloads\file1.exe', 'C:\Users\xy\folder\file1. exe', '[WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом'). Если я закрываю file1.exe вручную и запускаю updateloader.exe, дерево копирования работает без ошибок.
Есть ли у кого-нибудь решение этой проблемы? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/784 ... le-because

Вернуться в «Python»