gpt4 book ai didi

Python distutils 在不同机器上构建不同的扩展

转载 作者:行者123 更新时间:2023-11-30 23:58:18 24 4
gpt4 key购买 nike

我一直在开发一个包含大量文件的 Python 扩展模块。在一台机器上构建时,python setup.py build 会很高兴地检测更改的文件,仅构建这些文件,并将整个文件链接在一起,就像 make 一样。然而,在另一台机器上,对任何文件的一次更改都会触发所有源代码的重新编译。

只是为了清楚起见。两台机器都会检测包何时是最新的,并且不会执行任何操作。只有当单个文件发生更改时,它们的行为才会有所不同。

为什么第二台机器要这样做?

机器 1(执行正确的每个文件依赖性检查和构建。)

Python 2.6.4 (r264:75706, Feb 15 2010, 17:06:03) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

setuptools-0.6c11-py2.6

LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.4 (Final)
Release: 5.4
Codename: Final

机器 2(当单个源文件更改时重建所有内容。)

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.

setuptools-0.6c11-py2.6

No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04 LTS
Release: 10.04
Codename: lucid

最佳答案

我查看了 Mercurial 存储库并发现了此更改:

Issue #5372 :在 Distutils 的 c 编译器中删除 .o 文件的重用(因为扩展额外选项可能会在不更改 .c 文件的情况下更改输出)。

IOW,这是一个被删除的简单优化。

关于Python distutils 在不同机器上构建不同的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com