Son zamanlarda C++ 'da bazı Python gömme niyetiyle MacPorts'u kullanarak Boost'u yükledim.Boost.Python: "TypeError: Öznitelik adının dize olması gerekir"
#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();
}
}
Bu doğru derler, ama bunu başlattığınızda, çağrı (attr için), bir istisna atar ve ortaya çıkan hata mesajı: Python'ın web sitesinde bulunabilir bir örnekle doğru Xcode yapılandırılmışsa Sonra kontrol kararı "TypeError: öznitelik adı dize olmalı," str "değil". Hangi şüpheli bir yer tutucu gibi geliyor.
Google'a baktım ama şans yok.
Boost v1.39, Python 2.5 ve GCC 4.0'ı Leopard'da kullanıyorum.
Neyin yanlış olduğunu söylemek zor, kod çalışıyor gibi görünüyor (win/lin, py3, gcc/vs2005/10, destek 42/43) İşletim sisteminizin sürümünün, kullandığınız her şey tarafından resmi olarak desteklenip desteklenmediğini kontrol ettiniz mi? – pprzemek
Python, Boost ve GCC 4'ün tümü OS X'de resmi olarak desteklenir. Ancak, Boost.Python'un özellikle olup olmadığını söylemek zor. Dokümantasyon eskimiş gibi görünüyor ve OS X 10.3 üzerinde Python 2.3 ve GCC 3.3 ile çalışmış gibi görünüyor, ama Leopard hakkında bir şey yok. Belki de sorun budur. Ben ona bakacağım. –