使用C语言来写一个Python扩展库
一些加密解密功能比较重要,底层的实现不应该被外界的人所感知。
跟随我的步伐,花费10分钟的阅读时间,三步之内解决使用C语言来写扩展库的问题(python 2.7)。
目录文件
|
|
C语言写Python扩展库示例
occrypt.c
文件内容
|
|
相关解释与说明
initoccrypt
函数的命名规则是init<name>
- 相应的动态库的名字
occrypt.so
命名规则也是.so oc_encrypt
和oc_decrypt
是对Encrypt
和Decrypt
的进一步封装,使它可以被Python代码调用- 使用
PyArg_ParseTuple
来解析传入的Python参数 - 使用
Py_BuildValue("s", text)
来返回一个字符串 - 关于
PyArg_ParseTuple
和Py_BuildValue
参数规则可以访问:https://docs.python.org/2/c-api/arg.html#c.Py_BuildValue
编译C语言扩展库示例
编译方法:
|
|
相关解释与说明
-I/usr/local/anaconda3/envs/py27/include/python2.7
表示Include路径,这个路径包含了一个Python.h
-L/usr/local/anaconda3/envs/py27/lib/
表示ld链接路径,这个路径包含了一个libpython2.7.dylib
请根据自己的环境做相应的调节
提示:
clang
是macos的编译工具,linux请切换至gcc
Python使用C扩展库示例
test.py
文件内容
|
|
进入含有occrypt.so
的目录,调用python test.py
的输出结果:
|
|
参考链接