Из conda создайте require.txt для pip3

Привет, я обычно использую conda для управления средой, но теперь я нахожусь в проекте, который требует немного больше лошадиных сил, чем мой ноутбук. Поэтому я пытаюсь использовать свои университетские рабочие станции с новыми Intel Xeon. Но у меня нет прав администратора, и у рабочей станции нет конды, поэтому я вынужден работать с virtualenv и pip3.

Как мне создать pip3 requirements.txt из конды, который будет работать с pip3 и venv?

conda list -e > requirements.txt

не создает совместимый файл:

= is not a valid operator. Did you mean == ?

Выход conda:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
certifi=2016.2.28=py36_0
cycler=0.10.0=py36_0
freetype=2.5.5=2
icu=54.1=0
libpng=1.6.30=1
matplotlib=2.0.2=np113py36_0
mkl=2017.0.3=0
numpy=1.13.1=py36_0
openssl=1.0.2l=0
pip=9.0.1=py36_1
pyparsing=2.2.0=py36_0
pyqt=5.6.0=py36_2
python=3.6.2=0
python-dateutil=2.6.1=py36_0
pytz=2017.2=py36_0
qt=5.6.2=2
readline=6.2=2
scikit-learn=0.19.0=np113py36_0
scipy=0.19.1=np113py36_0
setuptools=36.4.0=py36_1
sip=4.18=py36_0
six=1.10.0=py36_0
sqlite=3.13.0=0
tk=8.5.18=0
wheel=0.29.0=py36_0
xz=5.2.3=0
zlib=1.2.11=0

Я думал, что просто изменил бы все = на == но в выводе конды есть два =. Какой из них изменить? Конечно, есть более простой способ?

EDIT: pip freeze > requirements.txt дает:

certifi==2016.2.28
cycler==0.10.0
matplotlib==2.0.2
matplotlib-venn==0.11.5
numpy==1.13.1
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
scikit-learn==0.19.0
scipy==0.19.1
six==1.10.0

Ответ 1

После обсуждения я хотел бы отметить, что вы можете увидеть некоторое разделение ролей pip и conda.

pip - стандартный менеджер пакетов, он делает одно и делает это хорошо. requirements.txt может быть сгенерирован в одной среде и установлен pip в новой среде.

Теперь есть вывод conda: вы по праву фиксируете их комментарий, в котором говорится, что "мы сгенерировали этот список библиотек для работы с conda". Обратите внимание, что сам Python находится в списке conda и (должным образом) отсутствует в requirements.txt. conda копирует собственную установку, поэтому его список библиотек длиннее и содержит сам Python.

pip создает список пакетов, которые были установлены поверх стандартной библиотеки, чтобы пакет, который вы написали, работал. Надеюсь, что это помогает различать два.

Также pipenv - это более новый инструмент, который может выполнять как виртуальную среду, так и управление пакетами.

Ответ 2

На всякий случай, если кто-то хочет создать файл require.txt из существующего проекта в conda, используйте следующую

  • Перейдите в среду своего проекта conda activate <env_name>

  • conda list дает вам список пакетов, используемых для среды

  • conda list -e > requirements.txt сохранить всю информацию о пакетах в вашей папке

  • conda env export > <env_name>.yml

  • pip freeze

Ответ 3

Как видно из комментария вверху, вывод

conda list -e > requirements.txt

может использоваться для создания виртуальной среды conda с помощью

conda create --name <env> --file requirements.txt

но этот вывод не в правильном формате для pip.

Если вам нужен файл, который вы можете использовать для создания виртуальной среды pip (то есть requirements.txt в правильном формате) Вы можете установить pip в среде conda, используйте pip для создания requirements.txt.

conda activate <env>
conda install pip
pip freeze > requirements.txt

Затем используйте полученный requirements.txt для создания виртуальной среды pip:

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

Когда я это проверял, пакеты не были идентичны на всех выходах (pip включал меньше пакетов), но этого было достаточно для настройки функциональной среды.