0

我目前正在开发一个机器学习库,它允许用户编写与 CPU/GPU 无关的代码来完成某些任务。为了运行支持 GPU 的代码,我的包具有某些依赖项,这些依赖项仅与支持 CUDA 的 NVIDIA GPU 兼容。因此,我希望我的包仅在用户将我的包安装在启用了 CUDA 的 GPU 的设备上时安装这些依赖项。我研究了如何做到这一点,起初似乎我的答案将出现在PEP 508中。但是,本 PEP中的environment markers描述不包括 GPU 的存在,更不用说该 GPU 的制造商和/或驱动程序了。

因此,我希望看到最“Pythonic”的解决方案是根据启用 CUDA 的 NVIDIA GPU 的存在来安装某些依赖项(如果仅检查 NVIDIA GPU 的存在而不检查 CUDA 更容易的话状态我暂时可以将其作为解决方案,但我肯定更愿意检查启用 CUDA 的状态)。

我知道它setup.py能够执行任意 Python 代码,所以从技术上讲,我可以用里面的代码为我解决这个问题,但我的理解是,setup.py由于相关的固有风险,Python 社区正在摆脱对 Python 的依赖在包设置期间执行任意代码,因此我希望符合社区的偏好并pyproject.toml尽可能使用我的解决方案,尽管如果认为这更合适我也很乐意使用setup.cfg(老实说我不觉得就像我完全理解这两个文件之间的区别以及哪个更适合什么目的一样,尽管从我观看的 mCoding 视频设置我的测试看起来好像setup.cfg更多的是包元数据)。

尽管我想要做的事情在PEP 508中没有明确详细说明,但感觉非常“本着同样的精神”,所以如果没有规范的方法来做到这一点,我会感到惊讶。

4

0 回答 0