I need to run Python scripts within a C-based app. I am able to import standard modules from the Python libraries i.e.:
PyRun_SimpleString("import sys")
But when I try to import a local module can
PyRun_SimpleString("import can")
returns the error message:
Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named can
When I type the command import can in IPython, the system is able to find it.
How can I link my app with can?
I've tried setting PYTHONPATH to my working directory.
2 Answers 2
Embedding the Python library does not add '' to sys.path like the interactive interpreter does. Use PySys_SetPath() to add the appropriate directory.
Oh hey, look what I found.
4 Comments
sys.path.I found this to work much more robustly,
PyObject *sys = PyImport_ImportModule("sys");
PyObject *path = PyObject_GetAttrString(sys, "path");
PyList_Append(path, PyUnicode_FromString("."));