2010-05-26 20 views
5

Muszę uruchamiać skrypty w języku Python w aplikacji opartej na języku C. Jestem w stanie importować standardowe moduły z bibliotek Pythona tj: Osadzanie Pythona w C: Problemy z importowaniem lokalnych modułów

PyRun_SimpleString("import sys") 

Ale gdy próbuję zaimportować moduł lokalnemu can

PyRun_SimpleString("import can") 

zwraca komunikat o błędzie:

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

Po wpisaniu polecenia import can w IPython, system może go znaleźć.

Jak mogę połączyć moją aplikację z puszką? Próbowałem ustawić PYTHONPATH do mojego katalogu roboczego.

Odpowiedz

8

Osadzanie biblioteki Python nie powoduje dodania '' do sys.path, tak jak robi to interaktywny interpreter. Użyj PySys_SetPath(), aby dodać odpowiedni katalog.

Och hej, .

+0

ja przepraszam; Jestem nowy w Pythonie. Co masz na myśli poprzez ''? – Drew

+0

Pusty ciąg. Co oznacza bieżącą ścieżkę w 'sys.path'. –

+0

Mam go do pracy ... Chociaż nie jestem pewien, jak i próbuję replikować wyniki na innym komputerze. Próbowałem używać sys.path.append, a także ręcznie łączenie ciągów reprezentujących sys.path i żądaną ścieżkę. Wydaje się, że nie mogę jednocześnie mieć ścieżki systemowej i mojej ścieżki. Dzięki za pomoc. – Drew

-1

Znalazłem to pracować znacznie bardziej wydajnie,

PyObject *sys = PyImport_ImportModule("sys"); 
PyObject *path = PyObject_GetAttrString(sys, "path"); 
PyList_Append(path, PyUnicode_FromString(".")); 
Powiązane problemy