Мне нужно установить пакет Python в пользовательский контейнер Docker, который я создаю из официального образа Docker 'ubuntu', поэтому я хочу минимизировать, сколько места он использует. Python3 отлично работает и работает, но по какой-то причине pip не включен.
Итак, я установил через apt install python3-pip
, это работает, но это колоссальные 300 мегабайтов и установка занимает пару минут (очевидно, потому что он устанавливает кучу вещей для сборки бинарных пакетов из gcc и т. Д.).
Конечно, я мог удалить python3-pip из образа после установки желаемых зависимостей и дополнительно использовать apt autoremove
, чтобы избавиться от 299 мегабайт. Однако это займет еще минуту.
Таким образом, хотя вышеприведенное работает, оно значительно увеличивает время сборки моего образа Docker. Поэтому я попытался проверить, можно ли установить зависимость без пипа:
Я попытался загрузить .tar.gz
зависимости из PyPI, извлек и попытался python3 setup.py install
, но это вызывает у меня странную ошибку:
Traceback (most recent call last):
File "setup.py", line 59, in <module>
from distutils import log
ImportError: cannot import name 'log'
Я подумал, что, возможно, мне нужно установить setuptools или обновить distutils.
Я пытался использовать get-pip.py
с официального сайта, но тоже не получилось:
Traceback (most recent call last):
File "get-pip.py", line 20890, in <module>
main()
File "get-pip.py", line 197, in main
bootstrap(tmpdir=tmpdir)
File "get-pip.py", line 82, in bootstrap
import pip._internal
File "/tmp/tmpjpa5gs_x/pip.zip/pip/_internal/__init__.py", line 40, in <module>
File "/tmp/tmpjpa5gs_x/pip.zip/pip/_internal/cli/autocompletion.py", line 8, in <module>
File "/tmp/tmpjpa5gs_x/pip.zip/pip/_internal/cli/main_parser.py", line 8, in <module>
File "/tmp/tmpjpa5gs_x/pip.zip/pip/_internal/cli/cmdoptions.py", line 17, in <module>
File "/tmp/tmpjpa5gs_x/pip.zip/pip/_internal/locations.py", line 10, in <module>
ImportError: cannot import name 'sysconfig'
, что очень странно, потому что, если я запускаю python3, import sysconfig
работает нормально.
Я также попытался apt install python-pyyaml
(зависимость, которая мне нужна в моем образе Docker), но, похоже, ее нет.
Так что у меня нет выбора.