2010-05-26 10 views
5

Ho bisogno di eseguire script Python in un'app basata su C. Sono in grado di importare i moduli standard dalle librerie Python vale a dire: Incorporamento di Python in C: problemi nell'importazione di moduli locali

PyRun_SimpleString("import sys") 

Ma quando provo ad importare un modulo locale can

PyRun_SimpleString("import can") 

restituisce il messaggio di errore:

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named can 

Quando digito il comando import can in IPython, il sistema è in grado di trovarlo.

Come posso collegare la mia app con possibile? Ho provato a impostare PYTHONPATH nella mia directory di lavoro.

risposta

8

L'incorporamento della libreria Python non aggiunge '' a sys.path come fa l'interprete interattivo. Utilizzare PySys_SetPath() per aggiungere la directory appropriata.

Oh hey, look what I found.

+0

mi dispiace; Sono nuovo di Python. Cosa intendi con ''? – Drew

+0

La stringa vuota. Il che significa il percorso corrente in 'sys.path'. –

+0

Ho capito che funziona ... Anche se non sono sicuro di come sto provando a replicare i risultati su un'altra macchina. Ho provato a utilizzare sys.path.append e concatenare manualmente stringhe che rappresentano sys.path e il mio percorso desiderato. Sembra che non sia possibile avere sia il percorso di sistema che il mio percorso allo stesso tempo. Grazie per l'aiuto. – Drew

-1

ho trovato questo a lavorare molto più robusta,

PyObject *sys = PyImport_ImportModule("sys"); 
PyObject *path = PyObject_GetAttrString(sys, "path"); 
PyList_Append(path, PyUnicode_FromString("."));