import.go 617 B

123456789101112131415161718192021222324252627282930313233
  1. package python
  2. // See:
  3. // https://docs.python.org/3/c-api/import.html
  4. import (
  5. "unsafe"
  6. )
  7. /*
  8. #define PY_SSIZE_T_CLEAN
  9. #include <Python.h>
  10. */
  11. import "C"
  12. func Import(name string) (*Reference, error) {
  13. name_ := C.CString(name)
  14. defer C.free(unsafe.Pointer(name_))
  15. if import_ := C.PyImport_ImportModule(name_); import_ != nil {
  16. return NewReference(import_), nil
  17. } else {
  18. return nil, GetError()
  19. }
  20. }
  21. func ReloadModule(module *Reference) (*Reference, error) {
  22. if module_ := C.PyImport_ReloadModule(module.Object); module != nil {
  23. return NewReference(module_), nil
  24. } else {
  25. return nil, GetError()
  26. }
  27. }