Из конды создай файл require.txt для pip3
Привет, я обычно использую conda для управления своей средой, но сейчас я работаю над проектом, который требует немного больше мощности, чем мой ноутбук. Поэтому я пытаюсь использовать рабочие станции моего университета, на которых установлены новые Intel Xeons. Но у меня нет прав администратора, а на рабочей станции нет conda, поэтому я вынужден работать с virtualenv и 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
Я думал, что я просто вручную изменить все =
в ==
но есть два =
в выводе конды. Какой из них изменить? Конечно, есть более простой способ?
РЕДАКТИРОВАТЬ: 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
7 ответов
Как показывает комментарий вверху, вывод
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
включал меньше пакетов), но этого было достаточно для создания функциональной среды.
В среде conda с простым вызовом
pip freeze
Я получил:
ipykernel @ file:///C:/ci/ipykernel_1607454116140/work/dist/ipykernel-5.3.4-py3-none-any.whl
ipython @ file:///D:/bld/ipython_1612487184680/work
...
Требуемый формат:
ipykernel==5.3.4
ipython==7.20.0
...
В активированной среде conda мне пришлось использовать
pip list --format=freeze
чтобы получить правильный формат для создания файла требований для людей, которые предпочитают использовать pip с виртуальными средами.
После обсуждения я хотел бы отметить, что на самом деле вы можете увидеть некоторое разделение pip
а также conda
роли.
pip
это стандартный менеджер пакетов, он делает одну вещь и делает это хорошо. requirements.txt
может быть создан в одной среде и установлен pip
в новой среде.
Сейчас есть conda
вывод: вы по праву фиксируете их комментарий, в котором говорится, что "мы сгенерировали этот список библиотек для работы с conda". Обратите внимание, что сам Python находится в списке conda и (правильно) не в requirements.txt
, conda
реплицирует собственную установку, поэтому ее список библиотек длиннее и содержит сам Python.
pip
создает список пакетов, которые были установлены поверх стандартной библиотеки, чтобы пакет, который вы написали, работал. Надеюсь, что это помогает различать два.
Также pipenv - это более новый инструмент, который может выполнять как виртуальную среду, так и управление пакетами.
На всякий случай, если кто-то хочет создать файл require.txt из существующего проекта в conda, используйте следующее
Перейти в среду вашего проекта
conda activate <env_name>
conda list
дает вам список пакетов, используемых для окружающей средыconda list -e > requirements.txt
сохранить всю информацию о пакетах в вашу папкуconda env export > <env_name>.yml
pip freeze
Как упоминалось в комментариях выше, правильный полный ответ:
pip list --format=freeze > requirements.txt
Активировать conda envconda activate flask-test
получить путь к conda env и скопировать егоconda list
добавьте скопированный путь с помощью lib\site-packages
и используйте его в пипе с --path
вариантpip freeze --path C:\Users\username\Miniconda3\envs\flask-test\lib\site-packages > requirements.txt
в Linux путь похож на /home/username/miniconda3/envs/flask-app/lib/python3.8/site-packages/
Я сделал несколько простых скриптов на Python для преобразования conda requirements.txt в pip3. Просто скопируйте приведенный ниже код.
f = open(r"requirements.txt", "r").read()
f1 = f.split("\n")
for line in f1:
if "=" in line:
a = line.split("=")[0:-1]
print(a[0]+"==" + a[1])
затем просто скопируйте распечатанный вывод;
Пример вывода:
_libgcc_mutex==0.1
_openmp_mutex==4.5
blas==1.0
brotli==1.0.9
bzip2==1.0.8