Перенос настроек Python на другой компьютер
Мой сценарий: у меня есть два ноутбука с fresh installation из windows . Сейчас я использую их оба для программирования. Итак, давайте предположим, что я устанавливаю различные модули / пакеты python на один из ноутбуков. Итак, есть ли способ clone выполнить эту полную настройку Python на другом моем ноутбуке. Причина этого в том, что мое интернет-соединение в настоящее время очень медленное, поэтому я не хочу загружать один и тот же модуль или пакеты дважды, а затем устанавливать их снова. Я знаю, что могу загрузить модули в zip-файле, перенести их в другой файл и запустить python setup.py install , но я собираюсь использовать pip для установки модулей. В любом случае, мне было интересно, возможна ли cloning установка python.
Ответы (4)
- Настройте pip-кеш на сетевое хранилище / USB-накопитель, доступный с обоих компьютеров (см. https://stackoverflow.com/a/4806458/851737 для получения инструкций)
- Заморозьте текущую среду пакетов с исходного ПК в файл требований: $ pip freeze > req.txt
- Скопируйте файл req на целевой компьютер и установите пакеты: $ pip install -r req.txt
Если вы поместите req.txt под VCS, вы сможете очень плавно автоматизировать и синхронизировать этот процесс.
даже если это не решит эту проблему, я дал вам голос за хорошее чистое решение, которое другие люди могут найти полезным! — person Hannes Ovrén; 14.06.2012
@kigurai Почему бы и нет? Я читал его вопрос, что он начинает с нуля (на обоих ПК), поэтому он собирается установить все дважды, а при таком подходе он все загрузит только один раз. — person schlamar; 14.06.2012
Полагаю, я прочитал это как синхронизацию без использования сетевого подключения и не клонировал среду один раз. — person Hannes Ovrén; 14.06.2012
Он просто говорит, что у него медленное соединение, и он не хочет загружать все дважды, а не то, что он не хочет использовать любую полосу пропускания для синхронизации. — person schlamar; 14.06.2012
Думаю, я неправильно прочитал ваше решение. Я думаю, что это действительно хорошо подходит тому, чем он хочет заниматься. — person Hannes Ovrén; 14.06.2012
Если у вас одна и та же версия Python на обоих компьютерах, вы можете просто скопировать содержимое Lib\site-packages и Scripts на новый. Но учтите, что это должна быть такая же младшая версия (например, 2.6 не работает с 2.7).
@RanRag Во многих случаях, возможно, второстепенная версия даже не обязательно должна быть такой же. Особенно, когда исходный компьютер имеет более старую версию, чем целевой компьютер. Когда Python обновляется, пакеты обычно не нуждаются в обновлении. Могут быть некоторые редкие случаи, когда при копировании из источника с более новым Python пакет не может работать в целевом объекте с немного более старым Python. — person Roland Pihlakas; 05.01.2018
Если вы используете virtualenv (http://www.virtualenv.org), вы сможете сохранить его на USB-флешку и носите с собой.
Вы когда-нибудь это тестировали? В документации говорится о перемещаемом virtualenv: Note: this option is somewhat experimental, and there are probably caveats that have not yet been identified. Also this does not currently work on Windows. — person schlamar; 14.06.2012
Это определенно не сработает, если буква диска изменится (что всегда может случиться), так что это не чистое решение. — person schlamar; 14.06.2012
Да, я перенес virtualenvs в Linux. Работал всегда, но тогда машины были довольно однородными. Печально слышать, что поддержка этого в Windows может быть немного шаткой. Я предполагаю, что если вы вместо того, чтобы хранить его на USB-накопителе, обязательно скопируйте его на диск, он может работать лучше. В любом случае, это обязательно стоит попробовать, потому что чертовски приятно, когда это работает 🙂 — person Hannes Ovrén; 14.06.2012
Я обновлял Python 2.7.3 -> 2.7.9 на своем ПК с Windows 7. Обычно это было бы хорошо, однако новая установка случайно попала на C: вместо того, где находилась моя предыдущая версия python, на диске D :. Чтобы заставить его работать, нужно было просто скопировать новую установку поверх старой. Работал как шарм, и все мои старые модули, которые я установил, присутствовали.
Как переместить все модули в новую версию 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 '' | 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./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.
(*), чтобы добавить папку в ПУТЬ: Свойства системы -> переменные среды -> щелкните «Путь»-> изменить -> добавить имя папки)
Как перенести пакеты в новую установку Python?
Как я могу быстро перенести / скопировать мои пакеты Python, которые я со временем установил, на новый компьютер?
Я обновляю старый ноутбук под управлением python2.5 и Django1.0 до нового ноутбука, на котором я собираюсь установить python 2.6.2 и Django 1.1. Со временем я скачал и установил много пакетов python на мою старую машину (например,pygame,pyro genshi,py2exe и тому подобное), есть ли более простой способ скопировать свои пакеты на новый ноутбук без запуска установочного файла для каждый отдельный пакет?
3 ответа
Если они чистый Python, то теоретически вы можете просто скопировать их из одного Lib\site-packages каталог на другой. Тем не менее, это не будет работать для любых пакетов, которые включают расширения C (так как они должны быть перекомпилированы заново для каждой версии Python). Вы также должны рассмотреть, например, .pth файлы, которые были созданы установочными пакетами, удаляя уже существующие .pyc файлы и т. д.
Я бы посоветовал просто переустановить пакеты.
Как говорит Vinay, есть некоторые части общих установок, которые нельзя просто скопировать. Кроме того, имейте в виду, что сценарии setup.py могут выполнять произвольную работу, например, они могут проверять версию Python и изменять способ установки, или они могут записывать записи реестра, создавать файлы.rc и т. Д.
Я согласен: переустановите пакеты. Время, которое вы экономите, пытаясь просто скопировать все, будет полностью потеряно, если в первый раз что-то загадочным образом не сработает, и вы попытаетесь отладить это.
Кроме того, еще одно преимущество переустановки: если вы делаете это только тогда, когда вам нужен пакет, то вы не будете беспокоиться о переустановке пакетов, которые вам больше не нужны.