2010-05-26 2 views
5

Je dois exécuter des scripts Python dans une application basée sur C. Je suis en mesure d'importer des modules standards des bibliothèques Python-à-dire: Incorporation de Python en C: Problèmes lors de l'importation de modules locaux

PyRun_SimpleString("import sys") 

Mais lorsque je tente d'importer un module local can

PyRun_SimpleString("import can") 

renvoie le message d'erreur:

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

Lorsque je tape la commande import can dans IPython, le système est capable de le trouver.

Comment puis-je lier mon application avec can? J'ai essayé de définir PYTHONPATH dans mon répertoire de travail.

Répondre

8

L'incorporation de la bibliothèque Python n'ajoute pas '' à sys.path comme le fait l'interpréteur interactif. Utilisez PySys_SetPath() pour ajouter le répertoire approprié.

Oh hey, look what I found.

+0

Je suis désolé; Je suis nouveau à Python. Que veux-tu dire par ''? – Drew

+0

La chaîne vide. Ce qui signifie le chemin actuel dans 'sys.path'. –

+0

Je l'ai eu à travailler ... Bien que je ne sais pas comment et je suis en train de reproduire les résultats sur une autre machine. J'ai essayé d'utiliser sys.path.append ainsi que de concaténer manuellement les chaînes représentant sys.path et mon chemin désiré. Il semble que je ne puisse pas avoir à la fois le chemin du système et mon chemin en même temps. Merci pour l'aide. – Drew

-1

Je trouve que cela fonctionne beaucoup plus robuste,

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