我有一个依赖于软件包B的软件包A。软件包B具有C扩展名[sic]。
当我使用A包时:
python setup.py install
它会经历安装过程,并在可能的情况下编译B的扩展名(并在输出中注明),否则将忽略它们。到目前为止,符合预期。
但是,如果我为A制作轮子,然后安装它:
python setup.py bdist_wheel
pip install $wheel_file
B仍然作为依赖安装,但是很快。并且在输出中指出B的setup.py正在执行时,它什么也没说。这使我怀疑扩展程序没有被构建或使用。我认为可能某个地方涉及到缓存,并尝试了pip的--no-cache-dir
选项,但这似乎只能强制重新下载依赖项;它没有添加编译消息或延迟。
这到底是怎么回事?扩展何时构建,何时不扩展?车轮中包含什么,什么不包含?
(上下文:我并不特别在意这种情况下是否获得扩展。这种行为让我感到惊讶,并且我想了解幕后情况)