Существующий dockerfile содержит такие команды, как
Код: Выделить всё
pip install pandas
Код: Выделить всё
error: externally-managed-environment
< /code>
Это не неожиданно. Недавние версии Ubuntu создают эту ошибку, когда пользователь пытается установить пакеты PIP
Это можно исправить, создав виртуальную среду. Недостаток заключается в том, что внутри контейнера Docker это не должно быть на самом деле необходимо, так как контейнер является своей собственной изолированной средой. Кроме того, он создает дополнительный слой, который немного неудобен. Запустите python3 my_file.py больше не работает напрямую, так как Вен должен быть активирован в первую очередь. (Есть два способа сделать это, самые простые из которых - выполнить/path/to/.venv/bin/python3 /path/to/my_file.py.)
Ошибка также может быть «исправлена», передавая аргумент-break-system-packages . Я не знаю подробно, каковы последствия этого, поэтому я не знаю, может ли это быть рекомендуемым решением в этом контексте. < /P>
Существует третья возможность, которая была бы Установите Python3-pandas (при условии, что он существует). Это пакет APT , который обеспечивает установку Pandas через apt . Я бы предпочел не использовать этот метод, поскольку не все пакеты PIP доступны в виде пакетов APT . Я стремлюсь попытаться избежать фрагментированной установки, при которой некоторые пакеты предоставляются с помощью одного метода, а другие пакеты предоставляются с помощью другого метода. < /P>
для просмотра: < /p>
< ul>
Что делает вариант командной строки-break-system-packages < /code>? Насколько «безопасно» это внутри контейнера Docker? (Вместо того, чтобы часто создавать и уничтожать этот конкретный контейнер, он имеет тенденцию сохраняться в течение значительного периода времени. Обычно от нескольких недель до нескольких месяцев.) < /Li>
Если это не подходит или Рекомендуемый подход, есть ли способ, которым я могу удобно создать общесистемную виртуальную среду и каким-то образом привести к тому, что она «постоянно» активирована. (Другими словами, чтобы создать какую -то «прозрачную» виртуальную среду, которая не заметна для пользователя - так что запуск python3 main.py будет работать Main.py с активной виртуальной средой , автоматически.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... sing-pip-i