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.0.9-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 503d14a5547a5dddba9ee6cfd968808783874cdb513cf1f962573aff3dc47b69 |
|
MD5 | c133b651c98104307b5eb37fd2ec22f5 |
|
BLAKE2b-256 | 413a41e88e268cfe116bb21821299c60277ea7dcec9d4355c25142b2b516b6e7 |
Hashes for pycextensions-0.0.9-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c370226fb14c6ed39bd12c31d2817759604e420d178ab0ac5e6f3ff5b1d9f5b4 |
|
MD5 | a2787a2334121a4b8a1943ae2068deab |
|
BLAKE2b-256 | f176338388065168be2c9e8a7da0707ad861433503841812a4be1cdd9c7f7198 |
Hashes for pycextensions-0.0.9-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed62a2db0409088300cfe03a49998907517d08abeb53c8c3dfc894a1f13c5825 |
|
MD5 | 2c308c8e05bf7f1ae8ca403e47080702 |
|
BLAKE2b-256 | 7eeba358dc489a8ba8f0fd401cc6c35322c2c561d0d156d7164035b73b9e14f8 |
Hashes for pycextensions-0.0.9-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba1b7e993ba5290724c462ffdb7b8f46192d0771e8512ac4ff92e8b59b48dbe3 |
|
MD5 | 250f72d7c0fa7a5ae4ae19cf218ce38c |
|
BLAKE2b-256 | 29fe44294211f4c4dd78a8f82e2efb2bae7829a0a14d9ae535fa6a96a30a60d6 |
Hashes for pycextensions-0.0.9-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ba2e5f6589016037a9863c3b02b4850e0c0aadf6ccaae157478699066179b82 |
|
MD5 | ee072d05f4aa6901701be8e37b5de00a |
|
BLAKE2b-256 | c7d471c2bd9a58bc87d8231e3fe0f5cf1ba7f9f01ad29372733ed21f7c6466e4 |
Hashes for pycextensions-0.0.9-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06f7163a33830e0d6d74cfb8a6ecde7e75f29e68a8d30217d40b4c26d1a1b0d5 |
|
MD5 | 212a96c848584bf6b42a7edd7ada3cf7 |
|
BLAKE2b-256 | ea29666cd80f2ea0dbda80a29ecc978d43ad5a0a0620566442e57a40091147eb |
Hashes for pycextensions-0.0.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 009d8dccc2cb166b482cf43d9fb812dc0c35d1342e58a27a999aeef8db38b5ab |
|
MD5 | b7f24bd71a79eef33dc94fab8e3a8c86 |
|
BLAKE2b-256 | ff650ea5be87e62cacb8757b0c257546396ee985f70ceebf3af49d6c2a938e79 |
Hashes for pycextensions-0.0.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e237a104caaab815a3f62d46653745bc364ec75958889e5231cb32472c41834d |
|
MD5 | f375f759d7630ad5acd82b7c6143133b |
|
BLAKE2b-256 | 8187e342c935983812b62822e6b93776e68101db69e139fb48ddf600951a9e14 |
Hashes for pycextensions-0.0.9-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b612783b33d687ebd4906ea2b9a2f6e657bdc439baad3f02323499b15c0e300 |
|
MD5 | 7cfc10fdd9859025569a7b06f4480fa5 |
|
BLAKE2b-256 | c5ccd695515d2bbb650ad1fab58fbd0c835e18240dacf9ab623d56ba88de660f |
Hashes for pycextensions-0.0.9-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2da72f0edc22677a36383d05fb0269366ec7a49a5824142171ff57ba58a0ed94 |
|
MD5 | 5e06991d1d5f901f90aed988755af64b |
|
BLAKE2b-256 | 3e569d8120fe9cca2feb3c3ed9d7a44254c4531900650f925de462168f14fbdf |
Hashes for pycextensions-0.0.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 685ab040c4ea8791705371d1a30c00307f012bab2ca5418a908db5cf44496e4f |
|
MD5 | 84f67c8a527ddcd3decf40b60e5f85c8 |
|
BLAKE2b-256 | 2f29302f2ad1fb5aa1303f2e0ef711187f49a03b9f31940ba7454addb27f720b |
Hashes for pycextensions-0.0.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 796645ccc6a3213ca2764f75323d1a462713f57ecf52338ae0f622a25e77778d |
|
MD5 | 78c1f38b5554dbfa6b0493bbdd831245 |
|
BLAKE2b-256 | 2d80b43a21a130c26138c0bac0c8d6a98047f25ea46476feeec0d05a99cc7822 |
Hashes for pycextensions-0.0.9-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 464843e5c49ea560c17d9915773fbe3cfd6780aa53542d890e138c39922d334f |
|
MD5 | ffe4276fb72ddd16e4ef85d026dcc786 |
|
BLAKE2b-256 | 3040ba3c4f6209824b9533d22f455e81d0faa65b0a3287e284e138c7151cfbd2 |
Hashes for pycextensions-0.0.9-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37f2034b511d96d37939e06aaf24cd4f8a37a6656b220b5e1037fa906636cc91 |
|
MD5 | e4e711c8d12c365741b0cab01119c7d4 |
|
BLAKE2b-256 | e586afa32c0c38f6adbb32b8db22c3b205f2125c27089b0d218ad0927bca658b |
Hashes for pycextensions-0.0.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | daf70003e2654ca528a23d25232fa3fad078318e14b42c7f3ffc2ac0c5f101d7 |
|
MD5 | 82347784951f13caf85643fc6aed8bf6 |
|
BLAKE2b-256 | c54838ca11158d49ce2b12ff51266a8e112282e2bf4245e5cbeedf93a33fd724 |
Hashes for pycextensions-0.0.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f6f0b4194eee5cc8b3cf2be8a0280f21fe21fb8a23c8a5f951e64e0daf188bc |
|
MD5 | 9bc4b22e0528d03c35b28483ab308bfc |
|
BLAKE2b-256 | 5dc39c0bf28d985a226afce18e27d9a4153202cecaaa9c2c1aba6f16b9df16ca |
Hashes for pycextensions-0.0.9-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2416fed04feaf78eb2a2e104bff079869fe936f09ed7361cf4a165f9c260312e |
|
MD5 | b55a855ad2400cfa56368a8bef8784ca |
|
BLAKE2b-256 | a6f1ba64280621ac2b2c74e1d04ff13391ef2719e864845e25bfd7eb77deadd2 |
Hashes for pycextensions-0.0.9-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f876bb4d02e0d7dddbd861c353a182f9913951709c9e182f3b133bb035c815bf |
|
MD5 | 8fac0281fa5a8d806c3d29e1ddcf4e20 |
|
BLAKE2b-256 | 23ceea513532dd445b5ead989e9dc2465f6a2ee9d40165e8ac8493667350b7c8 |
Hashes for pycextensions-0.0.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bea17795cda09cafe788b90c9f545f8ee15d2f92ba96c3b1c55055261ff3035b |
|
MD5 | fbc57dce323a1d1c069dbb9b175f61de |
|
BLAKE2b-256 | 212e220c3046af1346b9cbca4e03608dd008a0d5b736cd856330cc61847dcbce |
Hashes for pycextensions-0.0.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 627b22d7a893f447c8f0b383f62fb3a95bcc7bbb60b8f499e19387ed5d31cac0 |
|
MD5 | b136d9f40ff6a04d859b2781060f1ef8 |
|
BLAKE2b-256 | 9c58a4756042bcfad8cc8372f21bb7013843cad65449ad1962ce53ae614dd034 |