В вашем новом 3.7 venv у вас должно быть доступно pkg_resources
- setuptools
автоматически устанавливается при создании. Если нет, то просто pip install setuptools
.
setuptools
код библиотеки - это то, что pip
предлагает, чтобы заставить pip freeze
работать. Но вы можете просто заморозить его вручную.
# in 3.7 runtime...
import pkg_resources
old_site_dir = ".venv/lib/python3.6/site-packages/"
working_set = pkg_resources.WorkingSet([old_site_dir])
for dist in working_set:
print(dist.as_requirement())
Вы можете выбросить этот вывод в файл requirements.txt
и, вероятно, иметь работающий восстановленный сайт, python3.6
время выполнения не требуется.
Примечание что этот метод не может быть на 100% надежным, поскольку проекты могут объявлять отдельные деревья зависимостей для python3 .6 и python3 .7, используя маркеры среды в своих метаданных распространения (см. ОПТОСОЗ 508 ). Также возможно, что элементы, установленные на вашем сайте 3.6, вообще не поддерживают 3.7 . Тем не менее, довольно редко можно увидеть, что в младшей версии наблюдается увеличение между 3,6 и 3,7, поэтому на практике достаточно просто использовать рабочий набор.