ошибка встраивания модуля Python - PullRequest
1 голос
/ 13 декабря 2011

Итак, у меня есть ac to python wrapper, который принимает входные строки и передает их в функцию python.ошибка, которую я получаю, состоит в том, что API Python не распознает мой файл Python ...

PyObject *pName, *pModule, *pFunc;
QString pyFile="Test.py";
Py_Initialize();
pName = PyUnicode_FromString(pyFile.toAscii().data());
pModule = PyImport_Import(pName);

ошибка: «ImportError: нет модуля с именем Test.py». Это когда у меня есть свой Test.py втот же каталог, что и мой проект

, когда я поместил свой Test.py на один уровень выше в моем дереве каталогов, возникла другая ошибка: «Импорт по имени файла не поддерживается»

, поэтому я предполагаю абсолютноепути не работают?но в первом случае в моем примере я явно поместил свой Test.py в тот же каталог, что и мой проект, почему я получаю ошибку?код питона:

import sys
import os

def printFileClass(fileName, className):
    print ("The OMC CORBA File name is ", fileName,"\n")
    print ("The selected Modelica Class is ", className)
    return ("Done operations")


def main():
    print ("Hello! Here is testing script's main \n")



if __name__=='__main__':
main()

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Переменная окружения PYTHONPATH может использоваться для решения вашей проблемы.

В вашем коде вы можете сделать это где-нибудь до Py_Initialize ():

setenv("PYTHONPATH", ".", 0); // #include <stdlib.h> to get the prototype

Третий параметр, 0,означает перезапись - это ноль, поэтому вы также можете передать PYTHONPATH из оболочки.Если вы хотите всегда использовать кодированный вами путь, вы можете установить его на 1.

Я не уверен, что это не подвергнет вас другим проблемам, но для простого теста это сработает.

Кроме того, не включайте расширение .py в имя модуля, передаваемого PyImport_Import.

Я проверял это в системе Linux.

1 голос
/ 13 декабря 2011

Это правда, что в первом случае нет модуля с именем "Test.py". Ваш модуль в файле «Test.py» называется «Тест». Попробуйте импортировать это. «Test.py» будет подмодулем «py» в пакете с именем «Test».

...