Пакеты Python wheel Linux против Windows - PullRequest
0 голосов
/ 10 мая 2018

Можно ли использовать один и тот же пакет python (файл wheel) для Linux, Windows и т. Д.? Я спрашиваю об этом, поскольку некоторые пакеты включают в себя не только файлы Python, но и EXE-файлы, которые, как я полагаю, представляют собой код Python, превращенный в exe (по крайней мере, с помощью pip.exe и инструмента администрирования Django). Exe-файлы зависят от платформы, так же как существуют отдельные интерпретаторы Python для Windows и Linux, поэтому возникает вопрос.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Некоторые колесные пакеты являются кроссплатформенными;некоторые зависят от платформы.

Эта информация включена в название колеса.Например:

pytz-2018.4-py2.py3-none-any.whl (510kB)

То, что py2.py3 означает, что оно работает в любой реализации Python, как Python 2.x и 3.x, и что non-any означает, что оно работает на любой платформе.

numpy-1.14.3-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

То, что cp36-cp36m означает, что он работает только в CPython 3.6, и что macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64 означает, что он построен для x86_64 macOS версий 10.9-10.10.(Грубо говоря, это минимальная и рекомендуемая версии macOS; большинство других платформ не так сложны.)


Наиболее распространенная причина того, что пакет зависит от платформы, состоит в том, что он включает в себя CМодули расширения API, как в случае с numpy.Но могут быть и другие причины.Например, он может включать собственный исполняемый файл для subprocess или может использовать ctypes для доступа к системным API и т. Д.

0 голосов
/ 10 мая 2018

Python wheel - это формат упаковки, а не формат исполнения. Это в основном файл .zip.

Кроме того:

https://packaging.python.org/discussions/wheel-vs-egg/

... когда дистрибутив содержит только файлы Python (т.е. не скомпилирован расширения), и совместим с Python 2 и 3, это возможно для колесо должно быть «универсальным», похожим на sdist.

По той же ссылке:

Архив одного колеса может указывать на его совместимость с рядом Версии и реализации языка Python, ABI и системы архитектуры.

Другими словами, формат «wheel» спроектирован так, чтобы быть максимально переносимым ... и он также позволяет вам при необходимости включать специфичное для платформы содержимое.

...