Как организовать колеса как дистрибутивы pypi, чтобы обеспечить совместимость - PullRequest
1 голос
/ 08 апреля 2020

Я разрабатываю пакет python, который использует f2py для компиляции пары модулей FORTRAN. При переносе его на Windows я понял, что использование исходного дистрибутива для загрузки его в pypi не будет возможным, поскольку windows не имеет компилятора по умолчанию, с которым он поставляется. Поэтому я собираюсь изготовить машинно-специфичные c диски для их загрузки в PyPi.

Мои вопросы: 1. Должен ли я указать код как ОС, специфицируемый c на setup.py перед сборкой каждого bdist_wheel, чтобы определить, какой дистрибутивный пип должен быть выбран при установке на определенную машину? Или я должен оставить его независимым? 2. Могу ли я загрузить оба колеса как один и тот же дистрибутив в pypi? Если так, как я могу это сделать? Будет ли

twine upload dist/*

работать?

1 Ответ

0 голосов
/ 08 апреля 2020

Итак, я провел исследование о топи c, которое я кратко объясню ниже. Надеюсь, что это поможет любому другому новичку с тем же вопросом.

О спецификациях совместимости платформы пакетов для pip и PyPi

Мой вопрос был по существу: "Могу ли я установить classifiers=['Operating System :: OS Independent'] для пакета PyPi на setup.py, даже если то, что я делаю с setup.py, генерирует дистрибутивы, специфичные для ОС c .whl? "

Ответ - да. Аргумент classifiers должен содержать информацию о совместимости, которая будет отображаться для пользователя на PyPi или другом распространяющем сервисе, но он не влияет на совместимость для отдельных машинных c колес и должен отражать пакет в целом.

Проверяя файл setup.py на scipy, например, получаем:

CLASSIFIERS = """A :: Bunch :: Of :: Other :: Non-OS related info
    Operating System :: Microsoft :: Windows
    Operating System :: POSIX
    Operating System :: Unix
    Operating System :: MacOS"""

Совместимость ОС с дистрибутивом колеса, проверяемая при установке через pip - которая эффективно ограничивает совместимость вашего колеса с различными операционными системами - устанавливается скорее по информации, указанной в самом колесе, на основе вашей хост-системы при компиляции для себя или для гостя, указанного для колеса опцией --platform-name, например, при использовании кросс-компиляции для колес между Windows машинами .

...