首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不受pyc重写战斗影响的Python标准库

不受pyc重写战斗影响的Python标准库
EN

Stack Overflow用户
提问于 2019-10-30 20:30:13
回答 1查看 42关注 0票数 0

我当时正在读佩普3147,但被这段文字搞糊涂了:

Linux发行版(如Ubuntu 4和Debian 5)同时向用户提供多个Python版本。例如,Ubuntu9.10 Karmic用户可以安装Python2.5、2.6和3.1,而Python2.6是默认的。 这会对系统安装的第三方Python源文件产生冲突,因为您不能一次为多个Python版本编译一个Python源文件。当Python找到一个具有不匹配魔术号的pyc文件时,它又回到了重新编译源代码的较慢过程中。因此,如果您的系统安装了/usr/share/ Python /foo.py,两个不同版本的Python将争夺pyc文件并在每次编译源代码时重写它。(标准库不受此影响,因为在这些发行版上安装了多个版本的stdlib。)

为什么标准库不受pyc文件上不同Python版本之间的“战斗”影响?怎么会不受影响呢?这是否意味着它没有被重新编译?为什么安装了多个版本的stdlib解决了这个问题?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 20:34:43

每个Python版本都有一个标准库的完整副本,安装在特定于版本的目录中。因此,当您导入一个标准库时,它会找到已经为该版本正确编译的库(它有一个匹配的魔术号),因此它不需要重新编译它。

因此,当您编写类似import re的内容时,版本2.6从2.6库导入re.py,从3.1库导入re.py,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58633215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档