鱼C论坛

 找回密码
 立即注册
查看: 5110|回复: 14

[已解决]自己编译出的pyd怎么导入?

[复制链接]
发表于 2023-2-3 19:05:15 | 显示全部楼层
本帖最后由 人造人 于 2023-2-3 19:06 编辑

首先,看看这个吧
https://github.com/ruby-china/Ho ... ter/README-zh_CN.md
然后,下面是一个简单的演示
参考
https://docs.python.org/zh-cn/3/extending/extending.html
https://docs.python.org/zh-cn/3/extending/building.html#building

  1. sh-5.1$ ls
  2. main.py  spam.c
  3. sh-5.1$ cat spam.c
  4. #define PY_SSIZE_T_CLEAN
  5. #include <Python.h>
  6. #include <stdlib.h>

  7. static PyObject *spam_system(PyObject *self, PyObject *args) {
  8.     const char *command;
  9.     if(!PyArg_ParseTuple(args, "s", &command)) return NULL;
  10.     int ret = system(command);
  11.     return PyLong_FromLong(ret);
  12. }

  13. static PyMethodDef methods[] = {
  14.     {"system",  spam_system, METH_VARARGS, "Execute a shell command."},
  15.     {NULL, NULL, 0, NULL}
  16. };

  17. static struct PyModuleDef spammodule = {
  18.     PyModuleDef_HEAD_INIT,
  19.     "spam",
  20.     NULL,
  21.     -1,
  22.     methods
  23. };

  24. PyObject *PyInit_spam(void) {
  25.     return PyModule_Create(&spammodule);
  26. }
  27. sh-5.1$ cat main.py
  28. #!/usr/bin/env python
  29. #coding=utf-8

  30. import spam

  31. spam.system('ls')
  32. spam.system("echo 'hello world!'")
  33. sh-5.1$ gcc -g -Wall -shared -I /usr/include/python3.10 -o spam.so spam.c
  34. sh-5.1$ ls
  35. main.py  spam.c  spam.so
  36. sh-5.1$ ./main.py
  37. main.py  spam.c  spam.so
  38. hello world!
  39. sh-5.1$
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-3 19:12:02 | 显示全部楼层
不要把你编译好的文件放到标准库目录下面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表