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

distutils ignores changes to setup.py when building an extension?

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

但是,如果我唯一改变的是 setup.py(我正在尝试使库依赖项工作),那么它似乎不会重建(例如,none compile/link 命令出现)。我已经通过删除

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

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

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

python setup.py clean --all

或在执行 pip install -e .

时使用 --ignore-installed--no-cache-dir 标志

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

  1. 只需删除 site-packages 路径下的任何相关文件,您可能会发现有时会有多个版本或某些文件打包为 zip 文件或 运行 以下命令 python setup.py clean --all
  2. 重新编译安装

但我会建议使用 python setup.py develop,这样您就不需要在每次更改时都重新安装它,您将能够经常编辑您的代码,而不必再次 re-install。 python setup.py install 用于安装通常可以使用的 third-party 包。

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

总结:

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

我需要运行

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

感谢 DhiaTN 让我到达那里。