[devel] Вопросы по развитию python.

Alexey Tourbin alexey.tourbin на gmail.com
Ср Май 18 20:25:23 MSK 2016


2016-05-18 19:40 GMT+03:00 Igor Vlasenko <vlasenko на imath.kiev.ua>:
> On Wed, May 18, 2016 at 07:07:18PM +0300, Alexey Tourbin wrote:
>> 2016-05-17 21:44 GMT+03:00 Igor Vlasenko <vlasenko на imath.kiev.ua>:
>> > 1) python egg Provides/Requires
>> > Подсмотрел в mageia python egg Provides/Requires, которые можно расставлять
>> > автоматически по .egg-info. к примеру, в mageia
>> > в python-fabulous автовыставлено Provides: pythonegg(2)(fabulous)
>>
>> Мужчина, здравствуйте.
>> А чем грозит нарушение зависимостей pythonegg? Являются ли они в
>> какой-то степени производными и выводимыми из кода, или же они пишутся
>> в файл .egg-info вручную?
>> Интересно сравнить их с зависимостями pkg-config. Последние тоже
>> пишутся в .pc-файлы более-менее вручную. Но в случае, когда
>> зависимостей pkg-config Requires не хватает, pkg-config откажется
>> работать. В этом смысле зависимости pkg-config действительно требуются
>> для работоспособности сборки (на стадии configure, даже если в
>> остальном они произвольны).
>
> С этим полностью согласен, Requires выписывать по egg незачем.

Эх, мужчина, вы слишком быстро согласились. А тут есть над чем
подумать. Когда имеется код с хорошей структурой (напр., ELF), то
поиск зависимостей - это вывод (дедукция, если угодно) по структуре
кода. Когда структура кода плохая, как с интерпретаторами, то мы сидим
на двух стульях: с одной стороны, мы пытаемся анализировать код, с
другой стороны, нам иногда сливают метаинформацию. Анализировать код -
это некоторое эмпирическое и доказуемое начало, а метаинформация - это
ссылка на авторитет. Рассмотрим доказуемые высказывания и авторитетные
высказывания. Авторитетные высказывания обычно сильнее доказуемых. В
качестве компромисса можно принимать только те авторитетные
высказывания, которые имеют прообраз в доказуемых высказываниях. Так,
в perl.req метаинформация используется только для "наращивания версий"
(когда в коде требуемая версия не указана, а в Makefile.PL - указана;
тогда версия добавляется из Makefile.PL).

>> А для чего требуются зависимости .egg-info?
>
> Provides: pythonegg(2)(fabulous) -- дает дистрибутивно
> независимое имя.

Если оно дистрибутивно-независимо только между двумя дистрибутивами, в
число которых не входит Prominent North-American vendor...

Если же нужно дать питонистам простой способ установить нужные пакеты,
то здесь слишком много букв и слишком много скобок. Проще будет
"apt-get install egg2:fabulous". Но питонистов ждет разочарование,
поскольку в стабильных бранчах питоновские пакеты не обновляются, да и
в сизифе тоже не обновляются через пень колоду. Короче, питонистам
проще использовать свою дуду, как она там называется, кажется "pip
install fabulous".

> Я как раз занимался обучением робота, чтобы он в разных
> дистрибутивах соопоставил бы питоньи пакеты,
> несмотря на то, что rpm name у них разный.

Интересно, что вы думаете в терминах изоморфизма дистрибутивов, а не в
терминах конвергенции.


Подробная информация о списке рассылки Devel