I'm working on an embeddded Python interpreter (using the c-api) where we are loading a custom, zipped copy of the standard Python library (./lib/python25.zip).<br><br>Everything is working fine, but when I try to "import hashlib", i get the following error:<br>
<br>Traceback (most recent call last):<br>  File "tryrun.py", line 2, in <module><br>    import hashlib <br>  File "~/workspace/pyboinc/lib/python25.zip/hashlib.py", line 133, in <module><br>
  File "~/workspace/pyboinc/lib/python25.zip/hashlib.py", line 60, in __get_builtin_constructor<br>ImportError: No module named _md5<br><br>I assume this is related to a builtin or dynamically loaded C module, but I'm not sure exactly what the problem is. Can anyone explain to me what is going wrong? Other modules (like sys, os) are working fine, which may be because they are pure-Python modules.<br>
<br>Here is the main function:<br><br>int main(int argc, const char* argv[])<br>{<br>    if (argc < 2) {<br>        cerr << "Module name missing\n";<br>        cerr << "usage: " << argv[0] << " module" << endl;<br>
        return 1;<br>    }<br>   <br>    // get the python library name <br>    char* libname = get_lib_name();<br><br>    // try to copy the library from ./libname to ./lib/libname<br>    if (!copy_lib(libname)) {<br>        return 1;<br>
    }<br><br>    Py_SetProgramName((char*)argv[0]);<br>    Py_SetPythonHome("./");<br>    Py_Initialize();<br><br>    if (argc > 0){<br>        PySys_SetArgv(argc-1, (char**)(argv+1));<br>    }<br><br>    {<br>
        PyObject* syspath = PySys_GetObject("path");<br>        if (!syspath) {<br>            cerr << "Couldn't get sys.path" << endl;<br>            return 1;<br>        }<br>        if (!PyList_Check(syspath)) {<br>
            cerr << "sys.path not a list" << endl;<br>            return 1;<br>        }<br>        PyObject* str = PyString_FromString(".");<br>        PyList_Append(syspath, str);<br>        Py_DECREF(str);<br>
    }<br><br>    Py_InitModule("boinc", BoincMethods);<br><br>    PyObject* name = PyString_FromString(argv[1]);<br><br>    PyObject* mod = PyImport_Import(name);<br>    Py_DECREF(name);<br><br>    if (!mod) {<br>
        cerr << "Error loading module" << endl;<br>        PyErr_Print();<br>        return 1;<br>    }<br>    Py_DECREF(mod);<br><br>    Py_Finalize();<br>}<br><br>--<br>Jeremy<br><br>