Importlib.metadata.PackageNotFoundError при запуске Python в DockerPython

Программы на Python
Ответить
Anonymous
 Importlib.metadata.PackageNotFoundError при запуске Python в Docker

Сообщение Anonymous »

В структуре моего проекта есть следующая папка Docker

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

.../
docker/
src/
my_app/
__init.py__
# rest of py files
my_app_entrypoint.py
Pipfile
Pipfile.lock
pyproject.toml
setup.cfg
setup.py
test/
build.yaml
Dockerfile
...
Мой Docker определяется следующим образом:

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

...
COPY src/Pipfile* /home/workspace/
RUN pip install --upgrade pip \
&& pip install pipenv \
&& pipenv requirements > requirements.txt \
&& pip install -r requirements.txt
...
COPY src/pyproject.toml ./
COPY src/setup.cfg ./
COPY src/setup.py ./
COPY src/my_app_entrypoint.py ./
COPY src/my_app ./my_app
RUN chmod a+x my_app_entrypoint.py
...
и при запуске кода Python я получаю следующую ошибку:

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

Traceback (most recent call last):
File "/home/workspace/my_app_entrypoint.py", line 2, in 
import my_app
File "/home/workspace/my_app/__init__.py", line 20, in 
__version__ = metadata.version("my_app")
File "/usr/local/lib/python3.9/importlib/metadata.py", line 569, in version
return distribution(distribution_name).version
File "/usr/local/lib/python3.9/importlib/metadata.py", line 542, in distribution
return Distribution.from_name(distribution_name)
File "/usr/local/lib/python3.9/importlib/metadata.py", line 196, in from_name
raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: my_app
Строка /home/workspace/my_app/__init__.py, вызывающая ошибку:

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

__version__ = metadata.version("my_app")
и мой файл setup.cfg выглядит так:

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

[metadata]
name = my_app
version = 1.0.0
...

[options]
packages =
my_app
Я пробовал разные варианты, но после создания изображения всегда получаю одну и ту же ошибку. Похоже, он не распознает пакет или инструменты настройки не загружаются должным образом.
Я что-то упустил или делаю что-то не так? Может быть, мне следует включить RUN pip install . в Dockerfile после копирования файлов приложения, чтобы установить пакет?
Ответить

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

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

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

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

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