170 похожих чатов

Подскажите плиз что я делаю не так. Поставил pip пакеты в

venv, потом папку виртуального окружения скопировал в докер образ так:


COPY venv /venv
ENV PATH="/venv/bin:$PATH"


Но когда образ сбилдился то pip freeze показывает 0 пакетов.

Почему? Как сделать так чтобы система видела пакеты из venv?

43 ответов

22 просмотра

Локальное окружение не нужно копировать, его нужно ставить под докером

Тебе нужно венв создать заново, венв вообще копировать нельзя

Илья Власов
Тебе нужно венв создать заново, венв вообще копиро...

Почему нельзя?) Заново не могу, это же докер образ))

Oleh Kopyl – serial entrepreneur 🇺🇦
Почему нельзя?) Заново не могу, это же докер образ...

Потому что венв под каждую систему по своему ставиться, разные пакеты, разные установки. С вероятностью процентов в 70 даже на двух абсолютно одинаковых компах копированный венв работать не будет

Oleh Kopyl – serial entrepreneur 🇺🇦
Почему нельзя?) Заново не могу, это же докер образ...

И пруфы что не можешь заново венв создать в докере? Я каждый раз так делаю

зачем копировать венв?

Могу, но не хочу. Я pip пакеты ставлю кривым скриптом из одного репозитория. Этот кривой скрипт кроме установки пакетов еще и запускает то что мне не нужно, поэтому я делаю так 1. Арендую сервер 2. Запускаю скрипт, который ставит пакеты и запускает то что не нужно 3. Останавливаю ненужный процесс 4. Делаю pip freeze 5. В докере ставлю пакеты через pip install -r requirements.txt (не ставлю) На установке пакетов выскакиевает ошибка зависимостей. Проблема в том что порядок в requirements.txt неправильный. А какой правильный – у меня нет времени выяснять на каждый комит репозитория который я себе ставлю. Поэтому я подумал что можно собрать пакеты в venv и закинуть папку

Oleh Kopyl – serial entrepreneur 🇺🇦
Могу, но не хочу. Я pip пакеты ставлю кривым скри...

> А какой правильный – у меня нет времени выяснять ну раз нет времени, ты всегда можешь не делать эту задачу. Раньше думать надо было

Oleh Kopyl – serial entrepreneur 🇺🇦
Могу, но не хочу. Я pip пакеты ставлю кривым скри...

Ты в курсе, что пип может из других репозиториев спокойно все устанавливать? pip install git+ssh://git@github.com/echweb/echweb-utils.git

Oleh Kopyl – serial entrepreneur 🇺🇦
Не понял, обьясните прикол

если нет времени наливать бензин в машину, можно просто не ехать на ней

Илья Власов
Ты в курсе, что пип может из других репозиториев с...

Нет, не может. Я же сказал, там какой-то скрипт ставит все пакеты. И нет, там нет единого requirements.txt со всеми пакетами

Oleh Kopyl – serial entrepreneur 🇺🇦
Система одинаковая. Почему не будет?

нет не одинаковая, одна в докере, вторая вне его

Oleh Kopyl – serial entrepreneur 🇺🇦
это к чему?

так ещё раз, венв ты в докере сделать и скрипта прогнал в докере?

Alex
Потому что пути в venv абсолютные

Верно. venv папка лежит в том же месте

А зочем в докере венв?

All Cats
А зочем в докере венв?

Ну вообще это бывает очень полезно для multi stage билдов

All Cats
А зочем в докере венв?

ниже написал. Чтобы избавиться от гемороя с указанием правильного порядка pip пакетов

Alex
Ну вообще это бывает очень полезно для multi stage...

А смысл? В люб ли случае все компиляции (если они есть) будут на этапе сборки А без этого толку от мультистейджа примерно 0

Oleh Kopyl – serial entrepreneur 🇺🇦
ниже написал. Чтобы избавиться от гемороя с указан...

порядок пакетов не важен, пип сам разбирается кто от кого зависит

Oleh Kopyl – serial entrepreneur 🇺🇦
Верно. venv папка лежит в том же месте

Не может она лежать в том же месте, потому что места разные - хост и докер

Alex
Ты venv на хосте прямо в корне собираешь?

в корне. В корне папка /venv. В докере тоже в корень кладу папкку /venv

All Cats
А смысл? В люб ли случае все компиляции (если они ...

Смысл в том что ты финальный venv из билд стейджа копируешь в финальный и все.

Tishka17
порядок пакетов не важен, пип сам разбирается кто ...

У меня только разный порядок фиксил ругань pip-а про зависимости

Oleh Kopyl – serial entrepreneur 🇺🇦
У меня только разный порядок фиксил ругань pip-а п...

возможно пип старой версии и он криво резолвил конфликты. Попробуй обновить

Илья Власов
Тебе нужно венв создать заново, венв вообще копиро...

Не то чтобы совсем нельзя, просто должно всё остальное совпасть...

evle
Не то чтобы совсем нельзя, просто должно всё остал...

Ну я там писал про то, что в теории может совпасть на асболютно одинаковых системах, но может и не совпасть, так как многое зависит еще от библиотек самих

Илья Власов
Ну я там писал про то, что в теории может совпасть...

Собственно, Алекс уже написал, что в мультистейж как раз копируется.

Maksim
Ругань пипа можно наконец увидеть?

нет под рукой, нужно собирать

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта