我有一个构建扩展的 setup.py 文件。如果我更改其中一个源文件,distutils 会识别这一 pip 并重建扩展,显示所有编译/链接命令。
但是,如果我唯一更改的是 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 .
再次...
最佳答案
- 只需删除
site-packages
路径下的任何相关文件,您可能会发现有时会有多个版本或一些文件打包为 zip 文件或运行以下命令python setup.py干净 --all
. - 重新编译安装。
但我会推荐使用 python setup.py develop
这样你就不需要每次更改都重新安装它,你将能够经常编辑你的代码而不必重新安装再次。 python setup.py install
通常用于安装随时可用的第三方包。
pip 击此处以更好地理解 python packaging .
总结:
python setup.py clean --all
python setup.py develop
关于python - 构建扩展时,distutils 会忽略对 setup.py 的更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928001/