Копирование с использованием conda работает, но если вы использовали только virtualenv, вы должны вручную создать файл require.txt, создать новую виртуальную среду, активировать ее, а затем просто использовать pip install -r requirements.txt
.Обратите внимание на ключевое слово - manually
.
Например, если вам нужны requests
, numpy
и панды, ваш requirements.txt
будет выглядеть так:
requests==2.20.0
numpy==1.15.2
pandas==0.23.4
Вы можетена самом деле исключите numpy в этом случае, но вы по-прежнему сохраняете его так, как вы его используете, и если вы удалили панд, он все равно понадобится.Я создаю его, устанавливая новый пакет, а затем использую pip freeze, чтобы найти модуль, который я только что установил, и помещаю его в файл needs.txt с текущей версией.Конечно, если я когда-нибудь доберусь до состояния, в котором я им поделюсь, я заменю ==
на >=
, в большинстве случаев этого достаточно, если он конфликтует, вам нужно проверить, что требует конфликтующая библиотека, и настроитьесли возможно, например, вы указали в качестве требования последнюю версию numpy, но более старой библиотеке нужна именно версия xyz, и ваша библиотека тоже отлично подходит для этой версии (идеальный случай).
В любом случае, это то, что вам нужносохраняйте свою виртуальную среду, также помогает, если вы собираетесь распространять свой проект, так как любой может поместить этот файл в новую папку с вашим источником и создать свою собственную среду без каких-либо хлопот.
Теперь этопочему вы должны построить его вручную:
$ pip freeze
certifi==2018.10.15
chardet==3.0.4
idna==2.7
numpy==1.15.2
pandas==0.23.4
python-dateutil==2.7.3
pytz==2018.5
requests==2.20.0
six==1.11.0
urllib3==1.24
virtualenv==16.0.0
six
?pytz
? Что? Другие библиотеки используют их, но мы даже не знаем, для чего они нужны, если не будем искать их, и они не должны быть перечислены как зависимости проекта, они будут установлены, если они зависят от этого.
Таким образом, вы гарантируете, что не будет слишком много проблем только в очень редких случаях , когда одной используемой вами библиотеке требуется новая версия другой библиотеки, а другой - древняяверсия библиотеки, версия которой конфликтует, и в этом случае это большой беспорядок, но обычно этого не происходит.