什么是#34;纯Python?"

时间:2017-08-31 08:36:58

标签: python

有关stackoverflow的许多问题,请参阅" Pure Python " (来自"类似问题的一些随机示例"列表:12345,{{3 }},6789)。

我也在网络上的其他地方遇到过这个概念,例如:在10的包文档和imageio

等教程中

这让我相信必须有一些普遍接受的标准定义什么" Pure Python "是。

然而,尽管谷歌搜索到我的能力极限,我还没有找到这个定义。

任何人都可以向我指出一个普遍接受的定义" Pure Python,"或者这只是一些难以捉摸的概念,对不同的人意味着不同的东西?

修改: 要明确的是,我在问:这样的定义是否存在,是或否,如果是,那么广受好评的来源是什么?虽然我真的很感谢所有的评论和答案,但我并不是在寻求个人的解释。

2 个答案:

答案 0 :(得分:9)

在那个imageio包中,它们意味着它全部用Python实现,而不是(有时已经完成)用C或其他语言编写的部分。因此,它可以保证可以在Python上运行的任何系统上运行。

在该教程中,它表示下载和安装Python时获得的Python - 语言和标准库,而不是任何外部模块。之后的章节增加了一些外部库,如numpy和scipy,它们被大量使用但不属于标准库。

所以他们的意思已经不同了。

答案 1 :(得分:1)

“ pure-Python”软件包是仅包含Python代码且不包含C扩展名或其他语言的代码的软件包。您只需要一个Python解释器和Python标准库即可运行纯Python程序包,而与您的操作系统或平台无关。

纯Python软件包可以导入或依赖于非纯Python软件包:

  • 软件包X仅包含Python代码,并且是纯Python软件包。
  • 包Y包含Python和C代码,并且不是纯Python包。
  • Package X导入Package Y,但是Package X仍然是纯Python软件包。

一个好的经验法则:如果您可以制作软件包的源代码发行版(“ sdist”),并且其中不包含任何非Python代码,则它是纯Python软件包。

Pure-Python软件包不仅限于Python标准库;软件包可以从Python标准库外部导入模块,但仍被视为纯Python。

此外,独立模块是单个 .py 文件,该文件仅从Python标准库中导入模块。独立模块必须是纯Python模块。

请注意,在Python中,软件包从技术上讲是指其中包含 init .py 文件的文件夹。使用pip从PyPI下载和安装的东西是发行版(例如“源发行版”或“ sdist”),尽管术语“包”也用作“发行版”的同义词,因为该术语可能与该词的“ Linux发行版”用法混淆。

是否有“ pure-Python”的正式定义?在撰写本文时,虽然Python打包用户指南大量使用了https://packaging.python.org/overview/

中的术语,但没有