构建扩展时,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 .
...
- 只需删除
site-packages
路径下的任何相关文件,您可能会发现有时会有多个版本或某些文件打包为 zip 文件或 运行 以下命令 python setup.py clean --all
。
- 重新编译安装
但我会建议使用 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 让我到达那里。
我有一个构建扩展的 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 .
...
- 只需删除
site-packages
路径下的任何相关文件,您可能会发现有时会有多个版本或某些文件打包为 zip 文件或 运行 以下命令python setup.py clean --all
。 - 重新编译安装
但我会建议使用 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 让我到达那里。