distutils不重新编译C扩展模块
我正在尝试使用distutils来处理一个包含用C语言编写的扩展的Python模块。这个程序代码放在一个Linux服务器上,但我有时会从Windows机器上上传更改,使用的文件传输工具是WinSCP(编辑是在Notepad++中进行的)。我发现distutils经常没有注意到C代码的这些更改(也就是说,如果代码之前已经编译过,python setup.py build
不会触发gcc
)。在服务器上检查C源代码时,确实发现它已经正确更新。另一方面,直接在服务器上使用像vim
这样的文本编辑器修改代码时,python setup.py build
总是会重新编译更改过的文件。你知道为什么上传更改的文件可能不会导致distutils重新编译它们吗?
谢谢。
编辑:经过进一步调查,我发现如果我仅仅创建一个普通的C程序和一个Makefile,也会出现同样的问题。因此,这个问题看起来并不是distutils的问题。
1 个回答
1
我查看了distutils的源代码,发现它是通过检查文件的时间戳来判断文件是否需要重新构建的。
你可以确认一下,当winscp上传文件时,文件的时间戳是否有变化吗?否则,看起来构建命令有一个“强制”选项,可以无论如何都强制重新构建。