我有一个Qt C ++项目,在某些功能中,我添加了Python。 C ++函数调用python脚本并返回值。如下例所示。
PyObject *pName,*pModule,*pFunc;
PyObject *pArgs,*pValue;
const char *module="getBeamData";
pName=PyUnicode_FromString(module);
pModule=PyImport_Import(pName);
if(pModule!=NULL){
pFunc=PyObject_GetAttrString(pModule,"getBeamDose");
if(pFunc&&PyCallable_Check(pFunc)){
pArgs=PyTuple_New(2);
PyTuple_SetItem(pArgs,0,PyBytes_FromString(path.toStdString().c_str()));
PyTuple_SetItem(pArgs,1,PyLong_FromLong(fraction));
pValue=PyObject_CallObject(pFunc,pArgs);
它调用脚本getBeamdata.py。功能很好。我是否必须为所有客户和发货脚本安装python和库(如numpy)?或者没有发送脚本的其他方式。
答案 0 :(得分:1)
如果没有静态编译Python脚本,则需要分发:
或者你可以考虑使用py2exe创建一个可执行文件,然后分发它,尽管你需要修改你的程序与Python脚本交互的方式。
有关分发Python can be found here的一些进一步细节。
答案 1 :(得分:0)
如果我是你,我会用某种安装程序来做。
现在,在该安装程序中,您当然可以嵌入脚本的wheel
版本,此外还将使用setuptools
进行安装。
在那个setuptools脚本中你可以提到依赖关系,但这意味着你的客户端应该在他/她的计算机上安装Python,或者你应该发布自己的嵌入了该软件的Python版本。
也可以实现此类功能