如何将原生C构建依赖的setup.py替换为pyproject.toml
将遗留setup.py转换为pyproject.toml以编译Black-Scholes C扩展
转换后的pyproject.toml配置
直接替换或创建black_scholes/pyproject.toml为以下内容,完全替代原setup.py的功能:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "black_scholes" version = "0.0.1" description = "European Options Pricing Library" [tool.setuptools.packages.find] where = ["black_scholes"] [tool.setuptools.extension.bs] sources = ["black_scholes/bs.c"]
配置说明
[build-system]:指定构建所需的setuptools最低版本(必须支持pyproject.toml规范),以及构建后端[project]:迁移原setup.py中的包元数据(名称、版本、描述)[tool.setuptools.packages.find]:自动发现black_scholes包,对应原setup.py的packages=['black_scholes'][tool.setuptools.extension.bs]:定义C扩展模块,对应原setup.py的Extension('bs', sources=['black_scholes/bs.c'])
编译安装步骤
- 进入项目的
black_scholes目录(即pyproject.toml所在目录) - 执行安装命令:
若需开发模式(修改代码后无需重新安装),则执行:pip install .pip install -e .
解决MSVC 14编译器报错问题
若明明已安装编译器却提示缺失,按以下步骤排查:
- 打开对应架构的Visual Studio命令提示符(如x64 Native Tools Command Prompt)再执行安装命令,确保编译环境变量正确配置
- 确认Python架构(32/64位)与编译器架构完全匹配
- 更新pip到最新版本:
pip install --upgrade pip - 检查Visual Studio安装时是否勾选了「C++桌面开发」 workload,以及对应的Windows SDK组件
后续清理
原setup.py已不再需要,可直接删除。
内容的提问来源于stack exchange,提问作者not2qubit
相关产品推荐
相关产品推荐

