После установки библиотек приложений в контейнере Docker с UV — приложение не видит эти библиотеки.Python

Программы на Python
Ответить
Anonymous
 После установки библиотек приложений в контейнере Docker с UV — приложение не видит эти библиотеки.

Сообщение Anonymous »

У меня есть приложение Flask, которое работает в Docker.
Все работает хорошо.
Теперь я пытаюсь переключиться с PIP на UV.
Контейнер сборка без проблем и показ всех пакетов внутри, но когда я пытаюсь запустить этот контейнер - приложение не видит библиотеки.
Мой файл Dockerfile выглядит так:

Код: Выделить всё

FROM python:3.9

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

WORKDIR /app
COPY . .

RUN uv venv --python 3.9 && uv sync --frozen

EXPOSE 5100
CMD ["python", "app.py"]
Мой pyproject.toml очень прост:

Код: Выделить всё

[project]
name = "bgrm"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.9"
dependencies = [
"flask>=3.1.0",
"pillow>=9.3.0",
"rembg==2.0.30",
]
Когда я запускаю контейнер, у меня есть:

Код: Выделить всё

2024-12-14 23:11:35 Traceback (most recent call last):
2024-12-14 23:11:35   File "/app/app.py", line 3, in 
2024-12-14 23:11:35     from flask import Flask, render_template, request, send_file
2024-12-14 23:11:35 ModuleNotFoundError: No module named 'flask'
Единственное различие, которое я обнаружил между контейнерами:
В Flask на основе PIP находятся следующие местоположения:

Код: Выделить всё

/app/.venv/lib/python3.9/site-packages/flask-3.1.0.dist-info/METADATA
/app/.venv/lib/python3.9/site-packages/flask-3.1.0.dist-info/RECORD
/usr/local/lib/python3.9/site-packages/flask-3.1.0.dist-info/METADATA
/usr/local/lib/python3.9/site-packages/flask-3.1.0.dist-info/RECORD
В Flask на основе УФ-излучения расположены:

Код: Выделить всё

/app/.venv/lib/python3.9/site-packages/flask-3.1.0.dist-info/METADATA
/app/.venv/lib/python3.9/site-packages/flask-3.1.0.dist-info/RECORD
Кажется, мне все еще не хватает понимания того, как UV выполняет синхронизацию.
Понятия не имею, что не так.
Обновление:
Это утром я нашел решение. И мне кажется, я даже понимаю, почему это работает именно так.
Я прочитал несколько старых руководств по запуску venv в Docker.
Затем изменил Docker вот так:
CMD [.venv/bin/ python", "app.py]
Почему это работает:
  • uv создает папку .venv по умолчанию
    УФ-сканер для интерпретаторов Python и найдите 3.9
  • интерпретатор uv pin 3.9 для venv
  • библиотеки синхронизации uv с .venv
  • когда я запускаю команду с обычным Python - библиотек нет


Подробнее здесь: https://stackoverflow.com/questions/792 ... -see-those
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»