Необходимо ли останавливать все скрипты Python при обновлении пакетов Python? - PullRequest
0 голосов
/ 27 декабря 2018

Если скрипт python, использующий пакет X, запущен, а пакет X обновляется, приведет ли это к проблеме с правами доступа, которая приведет к сбою обновления?

Я использую Windows 10, Anaconda v5.2 работаетна python v3.6 и conda делать обновление пакетов.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Я отвечу на свой вопрос.

Я только что попробовал простой тест.Я запустил скрипт на python, который зацикливается навсегда.Он использует NumPy.Затем я попытался установить пакет python (pytorch), который требует понижения версии numpy.Когда скрипт запущен, установка завершилась неудачно с сообщением об ошибке «нет разрешения».После того, как я остановил сценарий, установка прошла успешно.

На основании результатов этого эксперимента сделан вывод, что при обновлении пакета python рекомендуется останавливать все сценарии python.

0 голосов
/ 27 декабря 2018

Хотя чистые файлы Python компилируются в памяти при импорте, и после этого источник (почти) больше не актуален, это еще не конец истории.

Пакеты могут иметь дополнительные ресурсы, которые загружаются ленивоили ваша программа или ее зависимости могут загружать зависимые модули по требованию, поэтому при запуске во время обновления она может загружать неожиданные версии пакетов / ресурсов или даже наполовину обновленные пакеты.

Кроме того, native (=не только для Python) - файлы .pyd в Windows - это библиотеки DLL, которые загружаются в процессе импорта.Поскольку библиотеки DLL отображаются в памяти без совместного использования, замена их во время загрузки не разрешена, поэтому это может заблокировать обновление соответствующих пакетов.

0 голосов
/ 27 декабря 2018

Когда вы import, вы создаете локальный экземпляр пакета в вашей оперативной памяти для запуска.Таким образом, обновление ваших пакетов не должно влиять на выполнение ваших скриптов.
Вы можете посмотреть на from importlib import reload, чтобы перезагрузить ваши пакеты, пока ваши скрипты все еще работают

...