Python中版本名称'cp27'或'cp35'是什么意思?

57

'cp27'或'cp35'在Python中代表什么意思?

就像在https://pypi.python.org/pypi/gensim#downloads中的文件一样。

这里输入图片描述

我正在64位Windows 7 PC上使用Python 2.7,不知道应该安装哪个版本的Python包。

以下是三个问题:

  1. 我应该安装“gensim-0.12.4-cp27-none-win_amd64.whl”还是“gensim-0.12.4.win-amd64-py2.7.exe”?我已经在64位Windows 7电脑上安装了“WinPython-64bit-2.7.10.3”。

  2. 'cp27'在Python中或者Python版本名称中代表什么?我用关键字“Python cp27”在线搜索但没有找到答案。

  3. 这两个版本的Python包之间有区别吗?('0.12.4-cp27-none-win_amd64'和'win-amd64-py2.7') 如果有的话,是什么区别?


我一直在想同样的问题,但是大体意思应该不难猜测 - CPython 版本 2.7 和 3.5? - tripleee
预编译可执行文件的打包方式与wheel不同,但内容基本相同。前者适用于独立安装,而后者则适用于开发等方面。 - tripleee
请逐个问题提出,每次只提一个问题。 - tripleee
@tripleee请查看我的答案,其中包含文档链接 :) - Wayne Werner
2个回答

48
如果你查看Python增强提案(通常称为PEP),你会发现cpN指的是特定版本的Python。
gensim-0.12.4-cp27-none-win_amd64.whl中,你可以将其分解开来:
  • 0.12.4 - 软件包版本,它们可能使用语义化版本控制
  • cp27 - 此软件包适用于CPython。IronPython、Jython或PyPy可能无法正常运行。
  • none - 此软件包的任何功能都不依赖于Python应用程序二进制接口(ABI)
  • win_amd64 - 这是为64位Windows编译的。这意味着它可能有一些用C/C++编写的代码。
  • .whl - 这意味着这是一个wheel分发。这很方便,因为它意味着如果您在Windows上运行CPython 2.7 64位,并且假设您已经安装了pip,那么您只需要运行以下命令即可获取此软件包:py -2.7 -m pip install --use-wheel gensim(当然,前提是它在pypi上可用)。您可能需要先运行py -2.7 -m pip install wheel。但除此之外,这就是所需的全部。

12
m后缀是Python编译器针对特定操作系统和架构进行优化时添加到版本号中的标识符。例如,在Windows上编译的Python二进制文件通常会带有-win32-win_amd64后缀,而在Linux上编译的则可能带有-linux_x86_64后缀。m表示该版本使用了特定的优化,通常是与线程相关的内存管理优化。 - Turtles Are Cute
@TurtlesAreCute 看起来这似乎是ABI标记的一部分。 - Wayne Werner
1
@TurtlesAreCute --with-pymalloc(标志:m) - florian.isopp

11

这些代表着CPython的版本(即从python.org获取的Python官方发行版),用于构建Wheel文件。

例如,cp27 适用于 CPython 2.7 版本。

警告: cp32 只适用于 CPython 3.2 版本。32位版本和64位版本之间的区别在另一个后缀中说明,例如文件名中的 win32amd64


现在有一个pp38 - 这是什么意思? - yeliabsalohcin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接