Как переместить все модули в новую версию 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 в старой версии - потому что я уже обновил, а старую версию удалили! Есть некоторые меры, которые я предпринял для восстановления некоторых пакетов, но я НЕ уверен, что каждый пакет будет работать с этим исправлением (например, пакеты, собранные с помощью колес).

  1. mv /your/path/to/python3.{6,7}/site-packages/
  2. Если дело в том, что пакеты установлены вне Venv (в /usr/local/ или же ~/.local), переустановите pip с помощью get-pip.py, чтобы быть в безопасности.
  3. Если вы выздоравливаете в Virtualenv. Активируйте свой virtualenv и используйте мой скрипт

Большинство ваших пакетов уже должно работать. Во всяком случае неисправности, pip reinstall будет работать. Если вы все еще хотите, чтобы 100% работало, pip freeze сейчас.

У меня есть альтернатива
(не уверен, работает ли она вне Windows 10)

В настоящее время я перехожу с 3.7 на 3.8, и я нашел способ переустановить свои предыдущие библиотеки с помощью имеющегося у меня сценария, который обновляет все пакеты с помощью pip install. (Предполагая, что вы установили свою новую версию Python в качестве основной версии). Это проверяет все пакеты, которые у меня были, и обновляет / устанавливает их в новой версии Python.

Примечание: я предпочитаю запускать скрипт из командной строки

  1. Используйте файловый менеджер, чтобы перейти в папку, в которой находится скрипт;
  2. Щелкните поле пути, напишите "cmd" и нажмите enter открыть командную строку из папки, в которой вы находитесь;
  3. Напишите "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). Я пробовал альтернативы, которые предлагали другие для переноса библиотек, но это не сработало (возможно, я не

Итак, я использовал решение с использованием жестокой силы. Совсем не элегантно, но оно сработало:

  1. удалите старые папки версий python из системного пути или даже удалите саму папку навсегда.. Папки: C:\Users\USERNAME\AppData\Roaming\Python\Python37 C:\Users\USERNAME\AppData\Local\Programs\Python\Python37

  2. Переустановите нужные пакеты, желательно через командную строку Anaconda. Python -mpip установить LIBRARY_NAME ИЛИ пип установить --user --force-переустановка имя_пакет ИЛИ пип установить --user --force-Переустановка имя_пакет == specify_package_version

Библиотеки будут установлены в c:\users\USERNAME\anaconda3\lib\site-packages и распознаны вашей новой версией python.

(*), чтобы добавить папку в ПУТЬ: Свойства системы -> переменные среды -> щелкните "Путь"-> изменить -> добавить имя папки)

Другие вопросы по тегам