如果我理解正确的话,Python编译文件是跨平台的。那么为什么发布的大多数库都需要构建和安装?
是分发者的懒惰,或者我说他们可以简单地分发pyc文件是错误的吗?如果不是这样,我如何分发一个以库为先决条件的python脚本文件,而不需要用户构建和安装库?
发布于 2013-04-17 20:05:25
因为所包含的代码的格式可能会随每个(主要) Python发行版而变化,而源代码至少可以兼容。实现之间的格式也可能不同(其中有几个,其中最著名的两个是CPython and PyPy。
有关.pyc文件内部结构的详细信息,请参阅this article。
发布于 2013-04-17 20:09:00
它们是跨平台的,但不是跨版本的,也不是跨实现的。换句话说,不同的CPython版本在处理同一个.pyc文件时可能会遇到问题。
如果你看看其他的实现,比如PyPy,IronPython,Jython等等,你根本就不会幸运地使用.pyc文件。
此外,.pyc文件对应一个.py文件。您(可能)想到的是包含用C编写的部分的库。它们必须编译成与平台相关的文件(.pyd、.dll、.so等)。才能工作。由于并不是很多开发人员都有可用的支持平台,所以他们将其作为源代码提供,并将其留给用户的系统进行编译。
发布于 2013-04-17 20:15:56
从.py文件创建.pyc文件的过程由解释器透明地完成。一些安装程序之所以在安装时生成它们,纯粹是为了避免在第一次运行脚本时生成它们-通常是出于速度的原因,但也是为了使.pyc可以在系统范围内(非用户可写的)目录中结束。与编译语言不同,甚至与用C编写的Python模块不同,技术上并不要求这些文件必须存在-如果存在,您将无法将自己的脚本直接放入python中并在没有编译步骤的情况下运行它们。
任何在安装之前严格要求构建步骤的库肯定都有一个编译为本机代码的组件--这当然不是跨平台的。对于任何纯python库,只要将模块的源代码目录树放在PYTHONPATH中的某个位置就足够了,直接从您下载的归档文件中复制它。
https://stackoverflow.com/questions/16059476
复制相似问题