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

或在执行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这样你就不需要每次更改都重新安装它,您将能够经常编辑您的代码,而不必再次重新安装它。 python setup.py install通常用于安装现成的第三方软件包。

查看此处以更好地了解 python 打包。

总结

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

我需要运行

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

感谢DhiaTN带我去那里。

最新更新