Это должно быть довольно легко сделать, если у вас все еще есть Python 3.5:
$ pip3.5 list --user --format=freeze | xargs pip3.6 install --user
переустановит все пакеты пользовательского сайта для Python 3.6. Ситуация становится немного сложнее, когда старая установка Python исчезает (так что нет, pip3.5
в вашем случае), но все равно ничего, с чем вы не можете справиться. Прежде всего, убедитесь, что пользовательский сайт все еще существует, поэтому вам есть с чем работать:
$ find ~/.local -type d -name "site-packages" | grep python3.5 /Users/hoefling/.local/lib/python3.5/site-packages
Теперь используйте pkg_resources
для перечисления дистрибутивов, доступных на этом сайте пользователя:
$ find ~/.local -type d -name "site-packages" | grep python3.5 | xargs python3.6 -c "import pkg_resources, sys; print(' '.join((f'==' for pkg in pkg_resources.find_distributions(sys.argv[1]))))" wheel==0.30.0
Пользовательский каталог сайта будет передан в строку кода Python, которая будет сканировать каталог с помощью pkg_resources.find_distributions
функции (см. Раздел « Получение или создание дистрибутивов » в документах), которая является той же самой, которая pip
используется под капотом, IIRC. Я только добавил некоторое форматирование, чтобы вы могли затем передать вывод новому pip3.6
в последней итерации расширения одной строки. Полный однострочный:
$ find ~/.local -type d -name "site-packages" | grep python3.5 | xargs python3.6 -c "import pkg_resources, sys; print(' '.join((f'==' for pkg in pkg_resources.find_distributions(sys.argv[1]))))" | xargs pip3.6 install --user
pkg_resources
является частью setuptools
пакета и должен быть предварительно установлен (по крайней мере, так происходит при использовании установщиков с https://www.python.org/downloads/ ). Если нет, setuptools
сначала установите :
$ dnf install python3-setuptools