Почему запуск приложения Dockerized Python с помощью uv run запускает сборку, а на моем локальном компьютере - нет?Python

Программы на Python
Ответить
Anonymous
 Почему запуск приложения Dockerized Python с помощью uv run запускает сборку, а на моем локальном компьютере - нет?

Сообщение Anonymous »

Раскрытие информации: в настоящее время я учусь использовать менеджер пакетов uv, а также, одновременно, Docker.
Скажите мою папку структура:

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

my_project/
├── src/
│   └── __init__.py
│   └── utils.py
│   └── hello_world.py
├── pyproject.toml
├── README.md
├── uv.lock
Чтобы вызвать src как пакет, я настроил свой pyproject.toml следующим образом:

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

[project]
name = "project-name"
version = "0.1.0"
description = "project-description"
authors = [
{name = "my-name", email = "my@email.com"}
]
dependencies = []

readme = "README.md"
requires-python = "==3.12.*"

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools]
packages = ["src"]
Таким образом я могу вызвать некоторые функции файла utils.py в файле hello_world.py, например:

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

from src.utils import print_hello_world

print_hello_world()
Затем я попытался «докеризировать» свое простое приложение. Dockerfile — это:

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

# Use a Python image with uv pre-installed
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim

WORKDIR /app

ADD . /app

RUN uv sync

ENTRYPOINT [ "uv", "run", "src/hello_world.py" ]
Затем я создал образ с помощью docker build -t myimage . И запустил его с помощью docker run myimage.
По какой-то причине всякий раз, когда я запускаю изображение, uv создает мой проект перед печатью «Hello, world!» сообщение.

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

user@host:~/projects/my-project$ docker run -it myimage:latest
Built project-name @ file:///app
Uninstalled 1 package in 4ms
Installed 1 package in 3ms
Hello, world!
Однако, если я выполняю те же шаги, которые подробно описаны в Dockerfile, но на моем компьютере этап «сборки», похоже, не происходит всякий раз, когда я запускаю свой файл с помощью uv run. Например:

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

user@host:~/projects/my-project$ uv lock
Using CPython 3.12.0
Resolved 1 package in 0.71ms
user@host:~/projects/my-project$ uv sync
Using CPython 3.12.0
Creating virtual environment at: .venv
Resolved 1 package in 0.71ms
Installed 1 package in 52ms
+ project-name==0.1.0 (from file:///home/fmppo/projects/so-question)
user@host:~/projects/my-project$ uv run src/hello_world.py
Hello, world!
Не могли бы вы помочь мне понять, почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/793 ... hile-it-do
Ответить

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

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

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

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

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