Мне нужно было установить библиотеку 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
Я предпочитаю иметь отдельный 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, которая все еще терпит неудачу со странной ошибкой, я думаю, что в управлении зависимостями внутри моей организации есть что-то особенное, что неприменимо где-либо еще, спасибо.
Хотите добавить нечетную ошибку к исходному вопросу? Или это та же самая ошибка?
та же ошибка, спасибо.
Чтобы помочь в дальнейшем, вам нужно будет указать Dockefile
, который вызывает проблему. Пожалуйста, добавьте его в свой вопрос (или хотя бы минимальный Dockerfile
, который можно использовать для воспроизведения вашей проблемы).
Это наша внутренняя система управления зависимостями, я не могу публиковать здесь, чтобы обновить, мы решили не использовать этот способ: упаковать torch в существующий файл Dockerfile, который несовместим с нашими внутренними проблемами зависимостей, предложенное вами решение определенно работает, как я пробовал в чистый Dockerfile, спасибо.
Большой. Рад узнать, что это сработало для вас. Пожалуйста, примите ответ.
Извините, забыл добавить одну заметку, я не могу использовать conda в своем Dockerfile по другим причинам...