a python c extension example
Project description
Python C Extensions Example
用于介绍一个
python C extension
的示例,用于熟悉其中流程,并了解其与poetry c extension
中的区别和各自优势。
项目介绍
编写日期: 2023/03/23
本项目就是使用 setuptools
来实现 python c extension
的示例,并通过 cibuildwheel
来进行 linux
,windows
和 macos
全平台打包和发包的演示。
据 2022
年的统计可知,目前比较流行的 Python
包管理工具为 setuptools
,poetry
和 conda
,当然还有 flit
等其它工具。我比较常用 setuptools
和 poetry
,poetry
在易用性上比较有优势,其理念也比较符合 python
未来的趋势,其使用 pyprojedct.toml
文件,以一个文件来统一管理项目的所有信息,从而提高项目的可维护性和可读性。但是很多工具的官方文档中都或多或少不太建议优先在 pyproject.toml
中配置,还有在含有 c extension
的情况下 poetry
和其它第三方包管理器就无法快速且优雅地实现,比如 poetry
官方文档现在还没有 python c extension
的示例,不过在其 ISSUES
中提到会尽快支持。
所以,本项目就以 setuptools
来实现标准的包管理的一个示例。
前提准备
windows
,linux
或 macos
上配置 make
工具。
运行说明
- 直接使用
make build_dist
即可运行打包,安装wheel
并跑通测试。 - 当然也可以单独使用指令,比如:
- make clean: 卸载本库,并清理测试文件,打包文件等。
- make test: 跑测试。
- 其它命令,比如
make install
,make build
不再说明。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for pycextensions-0.1.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76c2cadd434e21423d795d501ea5a7620ce1489bebd27ad5ef0ee39935d8f5d9 |
|
MD5 | 8e03d00ba9b3980bfb2f73729ffd4a5e |
|
BLAKE2b-256 | d9ef0f035e91154c936959683a002949148944a447650c1a9ab8c98123143e90 |
Hashes for pycextensions-0.1.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8bfbfa8f421e36aff2909abd9878e0bbb70a332a20529847beed2e35e50f92b |
|
MD5 | f880dbcc26029e4eae8543385d6fe465 |
|
BLAKE2b-256 | b4a801841b81a3bffb2f2b0294ea49994d4f521fb5f33c7df7c9ce6e67a9b894 |
Hashes for pycextensions-0.1.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cd7e44c41622bd4f852436c4468a0befbf37e7b147375fdd366dc924c94b78d |
|
MD5 | 61dd33603d7b5ee15e0493dec9133993 |
|
BLAKE2b-256 | fd9559a7454de994a3c5d54aed61bb340cd9f3952eaae648f49b17b61ef39236 |
Hashes for pycextensions-0.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90679cda03b7e097d2c4c1c0fd0d223fc3a8ffdb3ea270fc72174b88c7518053 |
|
MD5 | ab5e80cd2d6f8f652c469f49c7d4d752 |
|
BLAKE2b-256 | cbfa444a6d8d88bee7e2a6b537f5ed6010b861c5b6dc14e437e1c9f7ac1f9912 |
Hashes for pycextensions-0.1.1-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43aadd960292bd36b344c6408b0017f8156c56249404b0d28cf05d202adeba20 |
|
MD5 | 0818b4cf20f64babcc973e8fe2f5d414 |
|
BLAKE2b-256 | b26856351b131178159d210d6e7b1dbe5fcec3d36faf7241b1ee2a66d4461b00 |
Hashes for pycextensions-0.1.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ce8e74c5c75336b564d6f70de7cec4a3ff03b21971dbf900c441bf60fd6ee01 |
|
MD5 | 72b5c12e3df3c676ee7254b0d77578bc |
|
BLAKE2b-256 | 5dbdc1c13a5d1e1a002bae97ee0090fb0801a21762a10451cac40940c9dca374 |
Hashes for pycextensions-0.1.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9631999203048f36a5d8399aa8f586323a3dfa8d1524e203e30121ae6e70e32 |
|
MD5 | 201d6374feaa4b6a20fb7eb60782c47a |
|
BLAKE2b-256 | a2bb522c08d3d47313702d8546f299f1b48e99c47d4af00c6bb7f4025b704306 |
Hashes for pycextensions-0.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6b46184d8ebf7267ec6c81dd880b11af578fb49696e030ea79af1f6a70dc9fe |
|
MD5 | 747c67c470e343b20f35d27320641993 |
|
BLAKE2b-256 | 2efbe3a0e7e1c50b02f6fd8f1297596af1e204f67347b32253b01f8c0acc02f7 |
Hashes for pycextensions-0.1.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5612b011e44e948723e163858fd7f60aeac99239fd80fde8a1020b2bf3174068 |
|
MD5 | decea3579c1e44772a582c3ee6a3b1ea |
|
BLAKE2b-256 | 040c10a69e66b12ba7d15ac4f2a5ccd5a8b127b7de34e383d6f1f7cd2f1530de |
Hashes for pycextensions-0.1.1-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd3955deb183dff5b4d7719ae76017cefb711a41e0c4de73b3d18e92b06aff10 |
|
MD5 | 9ee7a1f711ef6886b9e3dd1b6d441dd4 |
|
BLAKE2b-256 | 77c797e7c8cbc24cee2147a3a3738b730dc360c3d44689d8381f0e905b5af647 |
Hashes for pycextensions-0.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bca25f2d3cee1d35502d62bb60f27bb1f24e9d586dfe6f8c7640a8f41350079d |
|
MD5 | edeb6839dabf67a603f667269d77e3f6 |
|
BLAKE2b-256 | 6209fb529f3ba92126877a576ddba8e0d57484710ed4d2ed0b8f07bb808b4820 |
Hashes for pycextensions-0.1.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fce5c4cefc87f1bd8ba2ab2991ee5c9db4e327c273be0951a8be304b54e010c9 |
|
MD5 | 00b611d1528b6e02cb9de911440aa137 |
|
BLAKE2b-256 | 6a0f18a60dfaa65e77b173e5328ebb37b9471633513842c4d9555914c4b65f42 |
Hashes for pycextensions-0.1.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99e304089fea7718f025756732fcb14ca344a6516334c6042b8f97f6546d1d80 |
|
MD5 | 41a149c9b098df983c77ee9ae7cf23a9 |
|
BLAKE2b-256 | 2e5a0baf1170afcf4253681a4fa4edd4f543b524f0827e3be78b3069d029c508 |
Hashes for pycextensions-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91271af56f693e80063672ea94497e22ccf341de272b3ec3edc40ecee2b4baf7 |
|
MD5 | 4490d00803398777bb4452812b0b74ab |
|
BLAKE2b-256 | fc32865b6b9637398eb2d298f63518554024b50687c9a5f3c2b797a79b69a57c |
Hashes for pycextensions-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84a8bb13bd1ef2ab7454a991056b4ecaa9bbd8a86e8c66c73dbc8e1619489c66 |
|
MD5 | ae88dcd5f2595408416855c73b586720 |
|
BLAKE2b-256 | 6564d4d14eece42810c28303cb14ab5711773b774f6e1301fc17bb39b132fc8a |
Hashes for pycextensions-0.1.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b5dc673718d3e3233ca549bf85be7ba50eda025237f77c1c2e52867e53f23fd |
|
MD5 | b8af1e2ba43e7e3dc267909d3328b4d0 |
|
BLAKE2b-256 | c7ddebeb4c715899eea69a83a28de57b598b52af1cb81267805f56613cbaa057 |
Hashes for pycextensions-0.1.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 902462c6b5d601fa9caee6feb1e0a0bba045cb0a1a298c05dc5ce65865d913da |
|
MD5 | 8e40e29a6fb4c6757dc3258e2e11a6e2 |
|
BLAKE2b-256 | a59128667989213338d6aba06c1753cbe2c399f6cda0eb4ad4fd5ac94e794cf3 |
Hashes for pycextensions-0.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0caa53121e1d89f8cf9e46b8638e2cb3b26a82e65c6822f51d8b3d7265c0c397 |
|
MD5 | 61cbbceaf4f97f3f2adba6438c687e8c |
|
BLAKE2b-256 | d2430e44e9ab7101d54d3932a8fd5a539164f4728848e49c3a5170cf6804869b |
Hashes for pycextensions-0.1.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84ebb095d714355567d8d11e3f170e10c98251b8a875ce7d6690354338ad9e59 |
|
MD5 | 337866debb05c1d989c82cd223a741ca |
|
BLAKE2b-256 | 910af7d12b87adab64df474ae925e9a74037be995b6f13d3c498d9d6a986172c |
Hashes for pycextensions-0.1.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43c4a27b4d64d3ece227a78351ef94ad09e5a71cb05e355b3f9c9ac6eeda5e52 |
|
MD5 | 3d1199fe1a0224a837e17a38cdb1941f |
|
BLAKE2b-256 | d998ef5a59930fbf726347a12e1307f72c1fa544af44df6fdce59d3da03cec4e |
Hashes for pycextensions-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8dbe064d24f61b04328e5ad1e8ad958605c23b2a956a5b73ee85367611fbfcc |
|
MD5 | 103677a58416e4c07df9e2b91e5608d6 |
|
BLAKE2b-256 | 04386239aa6a1f95ca7c07dee2fe80684dc604cceaad647bc21572e23732195c |
Hashes for pycextensions-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41bd73cc51c87fd424a71c1239fef818473175a30c95edac0cf7a0a0b1df3b8d |
|
MD5 | 12e62434bca710e645c4dc8bf9e32ef4 |
|
BLAKE2b-256 | eabede0e29c15fb0775b7ae4ede574dba75b79698b26c4d1d402a81035eb9b0b |
Hashes for pycextensions-0.1.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5559b4378658574c636c26e287d0522423a1877f3e89ddc82450bf0a6d246678 |
|
MD5 | 94a38cc9200295bba494b5c19837791f |
|
BLAKE2b-256 | 4fee598b979faa8b16417347a4aeeda3d375185d3b1183665bb5fa6c4956eb43 |
Hashes for pycextensions-0.1.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93be0fed2e7fc05a5ee0568e3bb4568a9d1f7131663f079d65eb500ff3ce3b51 |
|
MD5 | f0fdd8e32d919091d762db904bedf38a |
|
BLAKE2b-256 | 83483bb07350ab9ec1c773c48e17a025e5ba2e8f080aaf80ab18daead4d7d21d |
Hashes for pycextensions-0.1.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 886ecd10a1be47f6eb007938a8c05f2794df1cd63053c7dcaf626ecee74b45df |
|
MD5 | 01ccaaf3bd5c91bf22a89892632ba003 |
|
BLAKE2b-256 | 14a4079922c8b7203fc3e3b4a2bdaa920022f305e61132a0bc62a6b26381cf6f |
Hashes for pycextensions-0.1.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15037c5246ed5341e8a4d18e79687ce59b2958981f6e21ac2794bf6f2e34407c |
|
MD5 | c97179a20eb804956699c9755cffcf31 |
|
BLAKE2b-256 | b4e1f75427c6473725414027b829b4d2f376d57821515496c0db66cffaf831e5 |
Hashes for pycextensions-0.1.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a1941320bc70236157e5fb2e3eb6b529ef1b61325812a51fc14f822d7104785 |
|
MD5 | 1087036a591f1ce4cc22013d18f48171 |
|
BLAKE2b-256 | 0ecbabc2060765eab932bd3d21c3733e061cd45b0f32dbf30e2e2f95aa3afc69 |
Hashes for pycextensions-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | feb89b5728c4b6f475dd2c97c3dc29600483591b81f810e35d241587efd790d4 |
|
MD5 | 0f1a05fa0886fe72c77252b04129aa96 |
|
BLAKE2b-256 | 016c80d66fbb3430141a64077413851b89b9de35e35bdaa192f390044b56eda1 |
Hashes for pycextensions-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4039eb4e9c9282290761cf9e576cc47a786b1eb11deb62c826dcd6046a20cf6 |
|
MD5 | e9c50be919839cff6cad5252bd909f23 |
|
BLAKE2b-256 | ebb51073bec7d2896da1e9219e0cb8d77fa604c92184eed63160f8afe06b3eed |
Hashes for pycextensions-0.1.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d91b4ecdf1b1e3135cf42823448f9832e9bb6dfa49a6f9d4a5062543f2de47df |
|
MD5 | 280a530ba3396e5b842e9727dd8b15ef |
|
BLAKE2b-256 | 87f8aecb15058dce35e3a4cb8a8907009cbff02d84fee906b18ce3fc26889af5 |
Hashes for pycextensions-0.1.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e955771414f8e593e51da4f629191f5be347a00427f9fb450d9beec0260cd53 |
|
MD5 | 3de8d916cc5f2c025e10efb109afa21c |
|
BLAKE2b-256 | df258ae0a2ae3c3d875f2c1232fe01e48a1a2c708f1bb07f87a19fb08e8fced6 |
Hashes for pycextensions-0.1.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd5061a73ba3907113d6ce9863b7d254b7600d321fc7c41e012527675fecf876 |
|
MD5 | 0c0be098a0129ac92f6f09baa0d3f9b1 |
|
BLAKE2b-256 | 4b89165b3b76cce21b52b4bfeb35a9de6309dd0259941a62196227d30eec9749 |
Hashes for pycextensions-0.1.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c79693f56caf60e81dea7e8ab02358b995f3c6facf0dd709248c43aca62b40d9 |
|
MD5 | cd6fbadae040638e1b940c713657f7dd |
|
BLAKE2b-256 | aa652cb6abde8540cf6192225877febe04bb4fc7d47bdc4e3b651344eaa90ac4 |
Hashes for pycextensions-0.1.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2aa3cd28922e4928bbdf4532060dcca0d78ab028a76397851afb40705112d1a |
|
MD5 | 03debf6fea0aa7f74638be96c2d97436 |
|
BLAKE2b-256 | da90853988c454ebc7d24b3f31b2b245ba86910e1dafbe4c71eec8c3677e1731 |
Hashes for pycextensions-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f1b8a351553c9614d1bb5cca07d2ca89d0465a38f3a3f05e190139a8e6985de |
|
MD5 | 9bb39eb75668a08e8432177ad343d914 |
|
BLAKE2b-256 | f72012f9b39b73f3c1e0803de6735bf51ea2578c48fba7176dd2482b46db4b06 |
Hashes for pycextensions-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02234ce654e7a55ccdda854443507fbed9a508d69b8fbed19adee1463b2cce06 |
|
MD5 | eb6069a56561b5997009d48dc665f3e1 |
|
BLAKE2b-256 | 87052960e83bb88e9972971f0d6d0ed6866e652bab1070736cb0fd8241bebd11 |