distutils不会重新编译C扩展模块

时间:2011-04-08 18:39:41

标签: python distutils

我正在尝试将distutils与包含用C编写的扩展的Python模块一起使用。程序代码安装在Linux服务器上,但我有时会使用文件传输程序WinSCP从Windows机器上传更改(编辑完成在Notepad ++)。我注意到distutils通常不会注意到C代码中的这些更改(例如,python setup.py build如果以前编译了代码,则不会触发gcc。检查服务器上的C源代码表明它确实已正确更新。另一方面,使用vim等文本编辑器直接在服务器上更改代码始终会导致python setup.py build重新编译已更改的文件。知道为什么上传更改的文件可能不会导致distutils重新编译它们吗?

感谢。

编辑: 在进一步研究之后,如果我只使用Makefile创建一个普通的C程序,我会注意到同样的问题。因此,这个问题看起来不像是一个令人困扰的问题。

1 个答案:

答案 0 :(得分:0)

查看distutils的来源并了解它如何强制执行重建,看起来它会检查文件的时间戳以确定文件是否过期。

当winscp上传文件时,您能确定时间戳正在改变吗?否则,看起来构建命令有一个“强制”选项,无论如何都会强制重建。