Python 车轮包 Linux 对比 windows
Python wheel packages Linux vs windows
是否可以对 Linux、windows 等使用相同的 python 包(wheel 文件)?我问这个是因为一些软件包不仅包括 python 文件,还包括 EXE,我认为它们是 python 代码转换为 exe(至少使用 pip.exe 和 Django 管理工具)。 Exe 文件是特定于平台的,就像 windows 和 Linux 有单独的 python 解释器一样,因此出现了一个问题。
A Python wheel 是一种打包格式,不是执行格式。它基本上是一个 .zip 文件。
此外:
https://packaging.python.org/discussions/wheel-vs-egg/
...when the distribution only contains Python files (i.e. no compiled
extensions), and is compatible with Python 2 and 3, it’s possible for
a wheel to be “universal”, similar to an sdist.
来自同一个link:
A single wheel archive can indicate its compatibility with a number of
Python language versions and implementations, ABIs, and system
architectures.
换句话说,"wheel" 格式被设计为尽可能可移植...并且它还允许您根据需要包含特定于平台的内容。
一些wheel包是跨平台的;有些是特定于平台的。
此信息包含在方向盘的名称中。对于 example:
pytz-2018.4-py2.py3-none-any.whl (510kB)
py2.py3
意味着它适用于任何 Python 实现,Python 2.x 和 3.x,none-any
意味着它适用于任何平台。
This one更具体:
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
访问系统 APIs 等
是否可以对 Linux、windows 等使用相同的 python 包(wheel 文件)?我问这个是因为一些软件包不仅包括 python 文件,还包括 EXE,我认为它们是 python 代码转换为 exe(至少使用 pip.exe 和 Django 管理工具)。 Exe 文件是特定于平台的,就像 windows 和 Linux 有单独的 python 解释器一样,因此出现了一个问题。
A Python wheel 是一种打包格式,不是执行格式。它基本上是一个 .zip 文件。
此外:
https://packaging.python.org/discussions/wheel-vs-egg/
...when the distribution only contains Python files (i.e. no compiled extensions), and is compatible with Python 2 and 3, it’s possible for a wheel to be “universal”, similar to an sdist.
来自同一个link:
A single wheel archive can indicate its compatibility with a number of Python language versions and implementations, ABIs, and system architectures.
换句话说,"wheel" 格式被设计为尽可能可移植...并且它还允许您根据需要包含特定于平台的内容。
一些wheel包是跨平台的;有些是特定于平台的。
此信息包含在方向盘的名称中。对于 example:
pytz-2018.4-py2.py3-none-any.whl (510kB)
py2.py3
意味着它适用于任何 Python 实现,Python 2.x 和 3.x,none-any
意味着它适用于任何平台。
This one更具体:
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
访问系统 APIs 等