У меня есть модуль расширения Python, написанный на C. Я хочу использовать в этом C-коде один из стандартных модулей Python, например os
или shutil
. Как лучше всего это сделать?Импорт и использование стандартного модуля Python изнутри расширения Python C
ответ
PyObject* os = PyImport_ImportModuleNoBlock("os");
if (os == NULL)
return NULL;
someattr = PyObject_GetAttrString(os, "someattr");
Py_DECREF(os);
Если импортировать модуль только один раз, например, в init_yourmodule()
функция затем использовать PyImport_ImportModule("os")
.
Нельзя.
Вместо этого измените свой модуль расширения так, чтобы он предоставлял услугу Python, а затем записывал код Python, который вызывает os
, shutil
и ваш модуль.
На самом деле, для большого количества контента в модуле os
, вероятно, лучше написать собственный C-код, а не позвонить в Python.
Конечно, you can call Python modules from C code, это просто то, что это слишком много для модулей низкого уровня, таких как os
и shutil
. Когда дело доходит до методов копирования файлов в shutil
, переопределение их в вашем C-коде тривиально. На самом деле, в Windows, копирование файла выполняется путем вызова ОС, поэтому кода для записи не существует.
Если модуль Python написан на языке C, вы даже можете просто скопировать код для методы, которые вам нужны.
- 1. Импорт Python: импорт модуля без расширения .py?
- 2. Использование модуля python изнутри пакета
- 3. Импорт модуля python без расширения .py,
- 4. Импорт ошибки модуля Python
- 5. Python: импорт модуля android
- 6. Импорт модуля в Python
- 7. Python: Оптимизация модуля Импорт
- 8. Python: Импорт модуля
- 9. Python ошибка модуля импорт
- 10. Импорт модуля Blender Python
- 11. Импорт самонаписанного модуля Python
- 12. Импорт модуля Python: однолинейный и многострочный
- 13. Использование csound изнутри python
- 14. Python и C расширения
- 15. Расширения Python и OpenMP C
- 16. Импорт модуля класса в Python
- 17. Импорт модуля Vlc в python
- 18. Eclipse/Python Импорт модуля Dropbox
- 19. Импорт настроек модуля регистрации python
- 20. Импорт модуля Python из Bash
- 21. Импорт Python из переменной модуля
- 22. Глобальный импорт внешнего модуля модуля Python
- 23. Импорт функции модуля в Python
- 24. Импорт файла модуля в python
- 25. Импорт модуля wx в python
- 26. Как получить версию текущего Python-интерпретатора из модуля расширения Python?
- 27. Импорт и использование модулей в python
- 28. Использование модуля python
- 29. Импорт модуля python занимает слишком много памяти
- 30. Использование модуля python iscpy
Сложные модули расширения иногда должны делать вещи, которые уже были реализованы в stdlib. Стыдно переопределять их на C или реструктурировать код – zaharpopov