Nightmare1, тогда можно было бы записать рядом данные и временную программу, которая обновит основную, затем запустит основную обратно и та удалит временную. Эх, костыли костыльные... Не проще ли данные хранить рядом в отдельном файле?
Какая задача стоит? Зачем вообще изменять этот файл?
Если хочется изменить выполняющийся код, то это не сработает. Код при запуске загружается в память и больше с диска не читается (нюансы типа перезагрузки подгружаемых библиотек возможны, но большинство программ этого не делают, ибо зачем?).
Если хочется, например, устанавливать обновление программы, то это принято делать с помощью отдельной программы-апдейтера, которую запускают вместо основной программы, та меняет исполняемый файл и запускает программу заново. Например, именно так обновляется Telegram Desktop.
szQocks, к чему эти наезды? Я даже постановку задачи клещами выцеплял.
"Хранить в json" - это плохой кейс. Если данных много, то будет большой тяжёлый файл. Если что-то случится при записи файла, то он будет повреждён полностью. Как экономное решение с небольшими затратами и невысокими требованиям вполне можно применять, но это всё равно будет экономное решение с соответствующем уровнем качества и надёжности.
werastet, код надо выложить, иначе это будет нарушением правил сайта. Чувствительную часть можно убрать, но кода должно быть достаточно, чтобы было понятно, что он делает, и чтобы его можно было воспроизвести (запустить).
За помощью в режиме "код не покажу" - на фриланс за деньги.
Если в списке установленных пакетов есть aiogram (на скриншоте не видно), то скорее всего pip и python берутся из разных инсталляций питона. Можно проверить сравнением
pip list
python -m pip list
До кучи рекомендую запустить бота с помощью команды python bot.py, а не просто bot.py
szQocks, на самом деле возможно стоит ТЗ пересмотреть: сделать приложение работающим с локальными данными и отдельно две кнопки "выгрузить в гугл" и "загрузить из гугла". Так будет корректнее, чем постоянно дёргать гугл для синхронизации. Я подозреваю, заказчик хочет просто видеть все данные в табличном виде для выгрузки и анализа, подобные кнопки больше соответствуют смыслу его пожеланий, как мне кажется.
szQocks, вообще если заказчик не полный неадекват, то он вполне может прислушаться к разумным советом на тему "как сделать более правильно, удобно, надёжно, эффективно".
Пока что выглядит как попытка чересчур сложно решить простую задачу с непонятными целями.
szQocks, и всё равно, json тут ни к селу ни к городу. Можно как угодно хранить, хоть в текстовом файле, хоть в бинарном. Это всё равно фактически кэш, который можно асинхронно в фоне регулярно выгружать на сервер.
Другой вопрос, что смысл такого непонятен. Если это для одного человека, то зачем вообще хранить за пределами того устройства, где он работает? Сделать просто механизм бэкапа любым способом на случай проблем (например, паковать в zip и загружать в какой-нить гугл-диск или дропбокс).
szQocks, то есть речь идёт о том, что группа людей совместно через какое-то приложение редактируют таблицу? А как будет решаться вопрос конфликтов, если два разных пользователя отредактируют одну ячейку?
szQocks, я присоединяюсь к предыдущему оратору. Чтобы что-то советовать, нужно понимать, что вообще требуется. Пока что понятно чуть менее, чем ничего.
Естественно один event_loop не может ждать таски другого event_loop. Ведь суть asyncio в том, что в одном потоке выполняется event loop и на ожиданиях ввода-вывода происходит переключение между задачами. Если работает один event loop, то другой в это время не может выполняться.