Как переместить все модули в новую версию Python (с 3.6 до 3.7)
Я только что обновился до Python 3.7 и понял, что все мои модули застряли с предыдущей версией. Даже Джанго больше не узнается. Как я могу сделать, чтобы перенести все на новую версию? Я сейчас немного растерялся, даже не знаю, где была установлена новая версия.
Редактировать:
Когда я делаю $, какой python 3.6 терминал сообщает мне, что его не существует, но у меня есть каталог python 3.6 в usr / local / lib /, где установлены все модули.
В том же каталоге usr / local / lib / у меня также есть каталог python 3.7 с некоторыми установленными модулями, но многие отсутствуют. Однако, когда я ищу файл python 3.7 в моем поисковике, он не появляется. когда я делаю $ $ python 3.7, путь - это usr / local / bin, поэтому путь не совпадает с каталогом.
Кто-нибудь видит, что произошло, и знает, как я могу перенести все модули в python3.7?
7 ответов
Даже если старая версия python была удалена, можно использовать pip текущей версии python с --path
возможность вывести список всех модулей, установленных в предыдущей версии.
Например, перенос всех установленных пользователем модулей Python с 3.7 на 3.8
pip freeze --path ~/.local/lib/python3.7/site-packages > requirements.txt
pip install --user -r requirements.txt
Кстати, я всегда использую pip install
с участием --user
и оставьте общесистемные установки диспетчеру пакетов моего дистрибутива Linux.
Из-за возможных проблем совместимости безопаснее переустановить все пакеты:
pip3.6 list | awk '{print $1}' | xargs -I{} pip3.7 install {}
в более старой версии Python -- запустите команду
pip freeze > requirments.txt
загрузите и установите более новую версию на python. измените переменную PATH на новую версию и выполните команду
pip install -r requirments.txt
Я не уверен насчет всех модулей... но если вы хотите установить модуль именно в python3.7, попробуйте следующее:
python3.7 -m pip install *module_name*
В некоторых случаях у нас нет возможности pip freeze
в старой версии - потому что я уже обновил, а старую версию удалили! Есть некоторые меры, которые я предпринял для восстановления некоторых пакетов, но я НЕ уверен, что каждый пакет будет работать с этим исправлением (например, пакеты, собранные с помощью колес).
mv /your/path/to/python3.{6,7}/site-packages/
- Если дело в том, что пакеты установлены вне Venv (в
/usr/local/
или же~/.local
), переустановите pip с помощью get-pip.py, чтобы быть в безопасности. - Если вы выздоравливаете в Virtualenv. Активируйте свой virtualenv и используйте мой скрипт
Большинство ваших пакетов уже должно работать. Во всяком случае неисправности, pip reinstall
будет работать. Если вы все еще хотите, чтобы 100% работало, pip freeze
сейчас.
У меня есть альтернатива
(не уверен, работает ли она вне Windows 10)
В настоящее время я перехожу с 3.7 на 3.8, и я нашел способ переустановить свои предыдущие библиотеки с помощью имеющегося у меня сценария, который обновляет все пакеты с помощью pip install. (Предполагая, что вы установили свою новую версию Python в качестве основной версии). Это проверяет все пакеты, которые у меня были, и обновляет / устанавливает их в новой версии Python.
Примечание: я предпочитаю запускать скрипт из командной строки
- Используйте файловый менеджер, чтобы перейти в папку, в которой находится скрипт;
- Щелкните поле пути, напишите "cmd" и нажмите
enter
открыть командную строку из папки, в которой вы находитесь; - Напишите "python name_of_your_script.py" и нажмите
enter
для запуска команды.
Скрипт (адаптированный из этого решения):
import pkg_resources
from subprocess import call
packages = [dist.project_name for dist in pkg_resources.working_set]
[call("pip install " + name + " --upgrade") for name in packages]
Я столкнулся с аналогичной проблемой теперь, когда я обновился с python 3.7 до python 3.8 (новый)
Я установил Python 3.8, но система сохранила подпапку python37 с уже установленными пакетами (...\Python37-32\Lib\site-packages) даже с созданной подпапкой Pyhton38 с новым python.exe.
Обычно можно продолжать использовать старые библиотеки в новой версии Python, потому что существующая папка установки библиотек уже зарегистрирована в системном пути на вашем локальном компьютере (*).
Хотя у меня были проблемы с использованием некоторых библиотек (некоторые работали в Jupyter Notebook, но не в Spyder). Я пробовал альтернативы, которые предлагали другие для переноса библиотек, но это не сработало (возможно, я не
Итак, я использовал решение с использованием жестокой силы. Совсем не элегантно, но оно сработало:
удалите старые папки версий python из системного пути или даже удалите саму папку навсегда.. Папки: C:\Users\USERNAME\AppData\Roaming\Python\Python37 C:\Users\USERNAME\AppData\Local\Programs\Python\Python37
Переустановите нужные пакеты, желательно через командную строку Anaconda. Python -mpip установить LIBRARY_NAME ИЛИ пип установить --user --force-переустановка имя_пакет ИЛИ пип установить --user --force-Переустановка имя_пакет == specify_package_version
Библиотеки будут установлены в c:\users\USERNAME\anaconda3\lib\site-packages и распознаны вашей новой версией python.
(*), чтобы добавить папку в ПУТЬ: Свойства системы -> переменные среды -> щелкните "Путь"-> изменить -> добавить имя папки)