首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyproject.toml和cython扩展模块

pyproject.toml和cython扩展模块
EN

Stack Overflow用户
提问于 2022-09-21 12:27:02
回答 1查看 336关注 0票数 2

我有一个现有的python项目,主要使用setup.py来构建这个项目。该项目在setup.py中配置了2个Cython扩展模块。

最初,我为开发做了pip install -e .,但从那时起,我只在需要时使用python setup.py build_ext --inplace重新构建,只对扩展进行。这比安装软件包要快得多。

我开始将项目迁移到pyproject.toml,包括项目在pyproject.toml中的[project]部分。

我的setup.py基本上只包含Cython扩展模块,据我所知,到目前为止,这些模块还不能迁移到“pyproject.toml”。

现在我的问题是:python setup.py build_ext --inplace不再工作了,因为setup.py没有所有的信息,也没有咨询pyproject.toml来读取项目配置(因此项目信任信息丢失了)。

我是否需要恢复到原来的setup.py/*..cfg配置,还是有什么方法告诉setup.pypyproject.toml检索配置

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-25 15:08:05

下面是一个用pyproject.toml构建ext的小例子

pyproject.toml

代码语言:javascript
复制
[tool.setuptools]
py-modules = ["_custom_build"]

[tool.setuptools.cmdclass]
build_py = "_custom_build.build_py"

_custom_build.py

代码语言:javascript
复制
from setuptools import Extension
from setuptools.command.build_py import build_py as _build_py

class build_py(_build_py):
    def run(self):
        self.run_command("build_ext")
        return super().run()

    def initialize_options(self):
        super().initialize_options()
        if self.distribution.ext_modules == None:
            self.distribution.ext_modules = []

        self.distribution.ext_modules.append(
            Extension(
                "termial_random.random",
                sources=["termial_random/random.c"],
                extra_compile_args=["-std=c17", "-lm"],
            )
        )
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73800736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档