Bug 40773 - В пакете python3-module-pip много забандленых модулей
Summary: В пакете python3-module-pip много забандленых модулей
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: python3-module-pip (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Stanislav Levin
QA Contact: qa-sisyphus
URL: https://pip.pypa.io/en/stable/develop...
Keywords:
Depends on:
Blocks:
 
Reported: 2021-08-17 23:18 MSK by Vitaly Lipatov
Modified: 2021-08-18 14:46 MSK (History)
19 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2021-08-17 23:18:41 MSK
pip носит с собой кучу модулей, которые у нас должны быть обеспечены внешними зависимостями.
По идее это всё должно быть удалено:

$ cat src/pip/_vendor/vendor.txt 
appdirs==1.4.4
CacheControl==0.12.6
colorama==0.4.4
distlib==0.3.2
distro==1.5.0
html5lib==1.1
msgpack==1.0.2
packaging==21.0
pep517==0.11.0
progress==1.5
pyparsing==2.4.7
requests==2.26.0
    certifi==2021.05.30
    chardet==4.0.0
    idna==3.2
    urllib3==1.26.6
resolvelib==0.7.1
setuptools==44.0.0
six==1.16.0
tenacity==8.0.1
tomli==1.0.3
webencodings==0.5.1
Comment 1 Vitaly Lipatov 2021-08-17 23:22:07 MSK
Чтобы не делать так:

* Fri May 07 2021 Stanislav Levin <slev@altlinux.org> 21.1.1-alt1
- 21.0.1 -> 21.1.1
  (Updated bundled urllib3 1.26.2 -> 1.26.4 to fix CVE-2021-28363).
Comment 2 Stanislav Levin 2021-08-18 11:16:57 MSK
TL;DR По причинам, указанными вами же по ссылке, пока что это не реализовано.

Для применения pip вне виртуального окружения Python unbundle возможен. Эта же процедура спотыкается об virtualenv или venv(в стандартной установке Python pip поставляется в числе seed пакетов (смотреть ensurepip), со всеми сбандленными зависимостями), это не работает и не будет работать.

Bundle в Python допустим и в некоторых ситуациях необходим.
Comment 3 Vitaly Lipatov 2021-08-18 13:37:53 MSK
(Ответ для Stanislav Levin на комментарий #2)
> TL;DR По причинам, указанными вами же по ссылке, пока что это не реализовано.
> 
> Для применения pip вне виртуального окружения Python unbundle возможен. Эта
> же процедура спотыкается об virtualenv или venv(в стандартной установке
Резонно, как-то я из статьи не понял, что главное его применение  в virtualenv.
А что, разве внутри virtualenv используется pip из системы? Я думал, там в какой-то момент используется всё внутреннее.
Comment 4 Stanislav Levin 2021-08-18 14:46:29 MSK
Чтобы забутстрапить любое Python виртуальное окружение используются 3 seed Python пакета: setuptools, wheel и pip.

В PyPI версии virtualenv используются забандленные seed пакеты.
virtualenv предоставляет полумеры для их замены на, например, системные:
https://virtualenv.pypa.io/en/latest/user_guide.html#embed-wheels-for-distributions

С версии 20.4.4-alt1 Альтовый virtualenv перешел на системные "колеса" для seed пакетов. То есть, удалив bundle пакеты pip и собрав wheel для pip, pip внутри виртуального окружения просто не поймет, где ему искать свои зависимости.