Ошибка ОС: libtorch_cuda_cpp.so: невозможно открыть файл общего объекта: такого файла или каталога нет

Мне нужно было установить библиотеку Python torchaudio для моего приложения, которая упакована в образ Docker.

Я могу легко сделать это на своем экземпляре EC2:

pip3 install torchaudio
python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchaudio
>>> torchaudio.__version__
'2.2.1+cu121'

Но не через мой Dockerfile, вот что у меня есть в Dockerfile:

RUN pip3 install --target=/opt/prod/lib/python3.8/site-packages torchaudio

но когда я вошел в докер-контейнер, он начал с этого образа:

>>> import torchaudio
/opt/prod/lib/python3.8/site-packages/torchaudio/_internal/module_utils.py:99: UserWarning: Failed to import soundfile. 'soundfile' backend is not available.
  warnings.warn("Failed to import soundfile. 'soundfile' backend is not available.")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/prod/lib/python3.8/site-packages/torchaudio/__init__.py", line 1, in <module>
    from torchaudio import (  # noqa: F401
  File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 135, in <module>
    _init_extension()
  File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 105, in _init_extension
    _load_lib("libtorchaudio")
  File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 52, in _load_lib
    torch.ops.load_library(path)
  File "/opt/prod/lib/python3.8/site-packages/torch/_ops.py", line 852, in load_library
    ctypes.CDLL(path)
  File "/opt/prod/python3.8/lib/python3.8/ctypes/__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libtorch_cuda_cpp.so: cannot open shared object file: No such file or directory

Извините, забыл добавить одну заметку, я не могу использовать conda в своем Dockerfile по другим причинам...

Fisher Coder 19.04.2024 23:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
333
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предпочитаю иметь отдельный requirements.txt для установки пакетов Python, а не отдельные pip install команды в файле Dockerfile.

🗎 Dockerfile (Обновление pip не обязательно, но при этом предупреждающее сообщение отключается.)

FROM python:3.10.12

COPY requirements.txt .

RUN pip install --upgrade pip && \
    pip install -r requirements.txt

🗎 requirements.txt

torch==2.2.1
torchaudio==2.2.1
numpy==1.26.4

Спасибо за это решение, я попробовал его с помощью личного Dockerfile таким образом, у меня оно тоже сработало. Но не для моей работы Dockerfile, которая все еще терпит неудачу со странной ошибкой, я думаю, что в управлении зависимостями внутри моей организации есть что-то особенное, что неприменимо где-либо еще, спасибо.

Fisher Coder 21.04.2024 20:07

Хотите добавить нечетную ошибку к исходному вопросу? Или это та же самая ошибка?

datawookie 22.04.2024 14:05

та же ошибка, спасибо.

Fisher Coder 28.04.2024 00:10

Чтобы помочь в дальнейшем, вам нужно будет указать Dockefile, который вызывает проблему. Пожалуйста, добавьте его в свой вопрос (или хотя бы минимальный Dockerfile, который можно использовать для воспроизведения вашей проблемы).

datawookie 29.04.2024 07:38

Это наша внутренняя система управления зависимостями, я не могу публиковать здесь, чтобы обновить, мы решили не использовать этот способ: упаковать torch в существующий файл Dockerfile, который несовместим с нашими внутренними проблемами зависимостей, предложенное вами решение определенно работает, как я пробовал в чистый Dockerfile, спасибо.

Fisher Coder 09.05.2024 20:14

Большой. Рад узнать, что это сработало для вас. Пожалуйста, примите ответ.

datawookie 14.05.2024 16:39

Другие вопросы по теме