distutils在构建扩展时忽略对setup.py的更改?

时间:2016-01-21 15:41:03

标签: python c pip distutils setup.py

我有一个构建扩展的setup.py文件。如果我更改了其中一个源文件,distutils会识别这个并重建扩展,显示所有编译/链接命令。

但是,如果我唯一更改的是setup.py(我正在努力使库依赖项工作),那么它似乎没有重建(例如,没有任何编译/链接命令显示)。我已经通过删除行

中的一个源文件对此进行了测试
sources = ['foo.c', 'bar.c' ...]

当我pip install -e .python setup.py install时,它仍会为扩展创建一个新文件,但它必须是某个地方缓存的版本,因为它不应该编译。

如何清除此缓存?我试过了

python setup.py clean --all

或在执行--ignore-installed

时使用--no-cache-dirpip install -e .标记

我发现重建的唯一方法是在源文件中添加垃圾,触发重建和错误,删除垃圾,再次pip install -e . ......

2 个答案:

答案 0 :(得分:7)

  1. 只需在site-packages路径下删除与其相关的任何文件,您可能会发现有时会将多个版本或某些文件打包为zip文件,或运行以下命令python setup.py clean --all
  2. 重新编译并重新安装。
  3. 但我建议您使用python setup.py develop,这样您就不需要在每次更改时重新安装它,您就可以经常编辑代码而无需重新安装它。 python setup.py install用于安装即用型第三方软件包。

    点击此处以更好地了解python packaging

    <强>摘要

    python setup.py clean --all
    python setup.py develop
    

答案 1 :(得分:1)

我需要运行

python setup.py clean --all
python setup.py develop

感谢DhiaTN让我到那儿。