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

Dan*_*Dan 5 c python distutils pip setup.py

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

但是,如果我唯一改变的是setup.py(我正在努力使库依赖工作),那么它似乎没有重建(例如,没有编译/链接命令显示).我已经通过删除该行中的一个源文件来测试它

sources = ['foo.c', 'bar.c' ...]
Run Code Online (Sandbox Code Playgroud)

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

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

python setup.py clean --all
Run Code Online (Sandbox Code Playgroud)

在做的时候使用--ignore-installed--no-cache-dir标志pip install -e .

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

Dhi*_*aTN 7

  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
Run Code Online (Sandbox Code Playgroud)