Повышение. Python на Mac OS X: “TypeError: Название атрибута должно быть строкой”

Я недавно установил Повышение с помощью MacPorts с намерением сделать некоторое встраивание Python в C++. Я затем решил проверить, настроил ли я XCode правильно с примером, найденным на веб-сайте Python:

#include <boost/python.hpp>

using namespace boost::python;

int main( int argc, char ** argv ) 
{
    try 
    {
        Py_Initialize();

        object main_module(handle<>(borrowed(PyImport_AddModule("__main__"))));

        object main_namespace = main_module.attr("__dict__");

        handle<> ignored(PyRun_String("print \"Hello, World\"",
                                      Py_file_input,
                                      main_namespace.ptr(),
                                      main_namespace.ptr()));
    } 
    catch( error_already_set ) 
    {
        PyErr_Print();
    }
}

Это компилирует правильно, но когда я запускаю его, вызов к attr () выдает исключение, и получающимся сообщением об ошибке является "TypeError: название атрибута должно быть строкой, не 'ул.'". Который подозрительно походит на заполнителя.

Я искал его на Google, но никакой удаче.

Я использую Повышение v1.39, Python 2.5 и GCC 4.0, на Leopard.

7
задан Etienne de Martel 22 June 2010 в 02:46
поделиться

1 ответ

Ваш код работал у меня со следующей конфигурацией:

  • Snow Leopard
  • gcc версии 4.2.1 (AppleInc. build 5646)
  • Boost 1.41.0 установлен в /usr/local/boost/1_41_0/
  • Stock OSX Python 2. 5

Скомпилировано с помощью:

g++ -I/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2. 6/ -I/usr/local/boost/1_41_0/include -L/usr/local/boost/1_41_0/lib/ -boost_python -L/usr/lib/python2.6/config -lpython2.6 test.cpp

1
ответ дан 7 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: