From: "Vladimir D. Seleznev" <vseleznv@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] egg-info Date: Tue, 15 Feb 2022 01:15:07 +0300 Message-ID: <YgrUawKdziiMWFhk@portlab> (raw) In-Reply-To: <58066a78-9cf3-0e7f-3c22-c079040130b6@altlinux.org> On Mon, Feb 14, 2022 at 12:02:28PM +0300, Stanislav Levin wrote: > > > 13.02.2022 04:21, Vladimir D. Seleznev пишет: > > > > > В egg-info содержится спецификация модуля, включая его описание, > > зависимости и другие метаданные. Важной эта информация становится тогда, > > когда какой-нибудь модуль или программа на python использует эту > > информацию в рантайме , например, через некоторые явные вызовы importlib > > (что происходит не всегда, чаще всего модули ограничиваются лишь вызовом > > import, с которым не возникает проблем), и кого-то из зависимых пакетов, > > в свою очередь, не предоставляет egg-info. В этом случае Python считает, > > что такого модуля не установлено, и выдаёт ошибку. > > Верно. > Чаще всего этой программой будет external Python installation tool > (например, pip или poetry). > https://docs.python.org/3/library/importlib.metadata.html Я на самом деле не рассматривал pip и другие внесистемные инсталяторы питона, меня беспокоит, что системные модули и программы могут сломаться в рантайме (и судя по тому, что мейнтейнеры патчат файлы (egg|dist)-info, пытаясь обойти эту проблему — они ломаются. > Примеры формата метаданных: > egg-info (директория или файл) - формат метаданных от setuptools > (используется при `python setup.py install --root`, legacy): > https://setuptools.pypa.io/en/latest/deprecated/python_eggs.html > > dist-info (используется при установке из wheel, modern PEP517) > > https://www.python.org/dev/peps/pep-0376/ > https://www.python.org/dev/peps/pep-0427/#the-dist-info-directory > > > > > Я не разбирался различных системах межмодульных зависимостей самого > > питона и их взаимоотношений между собой, но похоже, что если модуль > > предоставляет egg-файлы, то Python ожидает, что они будут предоставлены > > всеми зависимыми модулями. Я вижу два решения этой проблемы: или > > паковать egg-файлы у всех модулей, или не паковать вообще ни у кого. При > > этом, я не знаю, какие ещё side-эффекты вылезут в последнем случае. > > > > Отсутствие метаинформации отразится на инсталляторах Python - они > перестанут видеть third-party модули из system sitepackages > (устанавливаемых apt) - это приведет к попытке установке таких > distributions откуда-то (например, pypi.org), что не всегда приемлемо. > В любом случае нам нужно привести пакеты Python в консистентное состояние и паковать либо все с метаинформацией, либо все без неё. В Федоре есть явное требование упаковывать в пакеты Python (egg|dist)-info-файлы [1]. Я предлагаю делать так же. [1] https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_dist_info_metadata -- WBR, Vladimir D. Seleznev
prev parent reply other threads:[~2022-02-14 22:15 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-02-12 16:11 ` [devel] [#295242] EPERM srpm=python3-module-pycairo-1.20.1-alt2.src.rpm Vladimir D. Seleznev 2022-02-12 22:20 ` Dmitry V. Levin 2022-02-12 22:31 ` Vladimir D. Seleznev 2022-02-12 22:41 ` [devel] egg-info Dmitry V. Levin 2022-02-13 1:21 ` Vladimir D. Seleznev 2022-02-14 9:02 ` Stanislav Levin 2022-02-14 22:15 ` Vladimir D. Seleznev [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=YgrUawKdziiMWFhk@portlab \ --to=vseleznv@altlinux.org \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git