venv, потом папку виртуального окружения скопировал в докер образ так:
COPY venv /venv
ENV PATH="/venv/bin:$PATH"
Но когда образ сбилдился то pip freeze показывает 0 пакетов.
Почему? Как сделать так чтобы система видела пакеты из venv?
Локальное окружение не нужно копировать, его нужно ставить под докером
Тебе нужно венв создать заново, венв вообще копировать нельзя
Что значит "ставить под докером"?)
Почему нельзя?) Заново не могу, это же докер образ))
Потому что венв под каждую систему по своему ставиться, разные пакеты, разные установки. С вероятностью процентов в 70 даже на двух абсолютно одинаковых компах копированный венв работать не будет
И пруфы что не можешь заново венв создать в докере? Я каждый раз так делаю
зачем копировать венв?
не надо венв копировать в докер
Могу, но не хочу. Я pip пакеты ставлю кривым скриптом из одного репозитория. Этот кривой скрипт кроме установки пакетов еще и запускает то что мне не нужно, поэтому я делаю так 1. Арендую сервер 2. Запускаю скрипт, который ставит пакеты и запускает то что не нужно 3. Останавливаю ненужный процесс 4. Делаю pip freeze 5. В докере ставлю пакеты через pip install -r requirements.txt (не ставлю) На установке пакетов выскакиевает ошибка зависимостей. Проблема в том что порядок в requirements.txt неправильный. А какой правильный – у меня нет времени выяснять на каждый комит репозитория который я себе ставлю. Поэтому я подумал что можно собрать пакеты в venv и закинуть папку
> А какой правильный – у меня нет времени выяснять ну раз нет времени, ты всегда можешь не делать эту задачу. Раньше думать надо было
Ты в курсе, что пип может из других репозиториев спокойно все устанавливать? pip install git+ssh://git@github.com/echweb/echweb-utils.git
Не понял, обьясните прикол
если нет времени наливать бензин в машину, можно просто не ехать на ней
Нет, не может. Я же сказал, там какой-то скрипт ставит все пакеты. И нет, там нет единого requirements.txt со всеми пакетами
поздравляю, вы в жопе.
Система одинаковая. Почему не будет?
Потому что венв так работает
нет не одинаковая, одна в докере, вторая вне его
Потому что пути в venv абсолютные
так ещё раз, венв ты в докере сделать и скрипта прогнал в докере?
Верно. venv папка лежит в том же месте
А зочем в докере венв?
Ты venv на хосте прямо в корне собираешь?
Ну вообще это бывает очень полезно для multi stage билдов
ниже написал. Чтобы избавиться от гемороя с указанием правильного порядка pip пакетов
А смысл? В люб ли случае все компиляции (если они есть) будут на этапе сборки А без этого толку от мультистейджа примерно 0
порядок пакетов не важен, пип сам разбирается кто от кого зависит
Не может она лежать в том же месте, потому что места разные - хост и докер
в корне. В корне папка /venv. В докере тоже в корень кладу папкку /venv
Смысл в том что ты финальный venv из билд стейджа копируешь в финальный и все.
У меня только разный порядок фиксил ругань pip-а про зависимости
возможно пип старой версии и он криво резолвил конфликты. Попробуй обновить
Не то чтобы совсем нельзя, просто должно всё остальное совпасть...
Ну я там писал про то, что в теории может совпасть на асболютно одинаковых системах, но может и не совпасть, так как многое зависит еще от библиотек самих
Собственно, Алекс уже написал, что в мультистейж как раз копируется.
Ну это одна и та же система по сути
Ругань пипа можно наконец увидеть?
нет под рукой, нужно собирать
казалось бы, кому это надо...
Обсуждают сегодня