Поскольку я каждый раз улучшаю свой код, для больших структурных изменений потока и других функций я сохраняю и добавляю новый номер...
поэтому, когда я использую код, он выглядит так:
import custom3 as c
function = c.do_thing()
поскольку я сохраняю до custom4, я меняю его на
import custom4 as c
function = c.do_thing()
очень простое обновление.
Моя проблема в том, что у меня есть много сценариев, где я использую import custom# as c
поэтому, когда я обновляю номер версии, мне нужно вернуться и изменить число во всем мире.
Есть ли способ централизованно контролировать это? В основном динамически импортировать библиотеку с помощью другого скрипта? Думаю, я могу использовать что-то вроде modules = map(__import__, moduleNames)
и хранить электронную таблицу последней версии? И писать сценарий для доступа к этому файлу каждый раз каждый раз?
Кто-нибудь реализовал что-нибудь более элегантное?
Способ сделать это, что профи используют не для создания разных модулей для разных версий, а для использования системы управления версиями для управления и отслеживания изменений в том же модуле.
Хорошая система контроля версий будет выполнять следующие действия:
позволяют сохранять и просматривать историю изменений в вашем модуле
позволяют отмечать ваши версии значимой аннотацией, например
"развивать", "выпускать",
позволяют вам оправиться от ошибок и вернуться к другой более ранней версии без необходимости переписывать код
позволяют вам делиться своей работой с другими разработчиками.
Существует множество систем управления версиями, некоторые из них являются собственностью лицензированных, но другие доступны бесплатно. Git, вероятно, является самой популярной системой с открытым исходным кодом на данный момент и может масштабироваться от одинокого разработчика до большой команды. Кроме того, в Github уже есть целая экосистема обмена кодами.
Когда вы изучаете программирование, уделите время изучению и использованию контроля версий. Вы не пожалеете об этом.
Вы можете использовать importlib.
import importlib
version = "3"
c = importlib.import_module("custom"+version)
function = c.do_thing()
Но да, как было предложено в комментариях, используйте некоторую систему управления версиями файлов, например git. Кривая обучения немного крутая, но это сделает вашу жизнь намного проще.
git
для контроля версий. Нет необходимости постоянно обновлять имена модулей для каждого изменения, импорт, как правило, остается прежним, а содержимое этих модулей обновляется обратимым образом.