Skip to main content

a python c extension example

Project description

Python C Extensions Example

GitHub Workflow Status GitHub python version codecov

用于介绍一个 python C extension 的示例,用于熟悉其中流程,并了解其与 poetry c extension 中的区别和各自优势。

项目介绍

编写日期: 2023/03/23

本项目就是使用 setuptools 来实现 python c extension 的示例,并通过 cibuildwheel 来进行 linuxwindowsmacos 全平台打包和发包的演示。

2022 年的统计可知,目前比较流行的 Python 包管理工具为 setuptoolspoetryconda,当然还有 flit 等其它工具。我比较常用 setuptoolspoetrypoetry 在易用性上比较有优势,其理念也比较符合 python 未来的趋势,其使用 pyprojedct.toml 文件,以一个文件来统一管理项目的所有信息,从而提高项目的可维护性和可读性。但是很多工具的官方文档中都或多或少不太建议优先在 pyproject.toml 中配置,还有在含有 c extension 的情况下 poetry 和其它第三方包管理器就无法快速且优雅地实现,比如 poetry 官方文档现在还没有 python c extension 的示例,不过在其 ISSUES 中提到会尽快支持。

所以,本项目就以 setuptools 来实现标准的包管理的一个示例。

前提准备

windowslinuxmacos 上配置 make 工具。

运行说明

  • 直接使用 make build_dist 即可运行打包,安装 wheel 并跑通测试。
  • 当然也可以单独使用指令,比如:
    • make clean: 卸载本库,并清理测试文件,打包文件等。
    • make test: 跑测试。
    • 其它命令,比如 make install, make build 不再说明。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycextensions-0.1.1.tar.gz (5.3 kB view hashes)

Uploaded Source

Built Distributions

pycextensions-0.1.1-pp39-pypy39_pp73-win_amd64.whl (9.3 kB view hashes)

Uploaded PyPy Windows x86-64

pycextensions-0.1.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (7.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (5.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pycextensions-0.1.1-pp38-pypy38_pp73-win_amd64.whl (9.3 kB view hashes)

Uploaded PyPy Windows x86-64

pycextensions-0.1.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (7.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (5.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

pycextensions-0.1.1-cp311-cp311-win_amd64.whl (9.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pycextensions-0.1.1-cp311-cp311-win32.whl (8.7 kB view hashes)

Uploaded CPython 3.11 Windows x86

pycextensions-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl (18.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

pycextensions-0.1.1-cp311-cp311-musllinux_1_1_i686.whl (18.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

pycextensions-0.1.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (13.1 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl (5.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pycextensions-0.1.1-cp310-cp310-win_amd64.whl (9.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pycextensions-0.1.1-cp310-cp310-win32.whl (8.7 kB view hashes)

Uploaded CPython 3.10 Windows x86

pycextensions-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl (17.1 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

pycextensions-0.1.1-cp310-cp310-musllinux_1_1_i686.whl (17.1 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

pycextensions-0.1.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl (5.8 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pycextensions-0.1.1-cp39-cp39-win_amd64.whl (9.2 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pycextensions-0.1.1-cp39-cp39-win32.whl (8.7 kB view hashes)

Uploaded CPython 3.9 Windows x86

pycextensions-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl (16.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

pycextensions-0.1.1-cp39-cp39-musllinux_1_1_i686.whl (16.9 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

pycextensions-0.1.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl (5.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pycextensions-0.1.1-cp38-cp38-win_amd64.whl (9.2 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pycextensions-0.1.1-cp38-cp38-win32.whl (8.7 kB view hashes)

Uploaded CPython 3.8 Windows x86

pycextensions-0.1.1-cp38-cp38-musllinux_1_1_x86_64.whl (17.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

pycextensions-0.1.1-cp38-cp38-musllinux_1_1_i686.whl (17.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

pycextensions-0.1.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pycextensions-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pycextensions-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl (5.8 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page