Один из способов сделать это - запустить:
python3.7 -m pip freeze > installed.txt
Затем, после установки новой версии Python, вы можете установить пакеты с:
python3.8 -m pip install -r installed.txt
Существует вероятность того, что пакеты, установленные вами для старой установки Python, не совместимы с новой версией. По этой причине безопаснее сохранить обе установки Python, а затем использовать виртуальные среды для каждого из ваших проектов.
Вы можете создать virtualenv для каждого из ваших проектов, используя версию Python, необходимую для этот проект, и установите ваши зависимости только в virtualenv для этого конкретного c проекта. Таким образом, вы можете избежать ситуации, когда для проекта A требуется старая версия определенного пакета, а для проекта B требуется более новая. Если вы устанавливаете все свои пакеты глобально, в этом случае у вас возникают проблемы.
См. Также Что такое virtualenv и почему я должен его использовать?