部署嵌入 python C++程序
Deploying C++ program with python embedded
我有一个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)?或者有没有其他方法不发送脚本。
如果不静态编译 Python 脚本,则需要分发:
- 要求.txt(适用于脚本所需的所有库/模块)。
- 有关脚本所需的正确 Python 版本的详细信息(2.7/3 等)。
或者,您可以考虑使用 py2exe 创建一个可执行文件并分发它,尽管您需要修改程序与 Python 脚本交互的方式。
有关分发 Python 的更多详细信息可以在此处找到。
如果我
是你,我会用某种安装程序来做。
现在在该安装程序中,您当然可以嵌入脚本的wheel
版本,此外还将使用 setuptools
.
在该 setuptools 脚本中,您可以提及依赖项,但这意味着您的客户端应该在他/她的计算机上安装 Python,或者您应该随软件一起发布自己的 Python 版本。
这种功能也可以使用Boost.Python
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 如何在c++程序中找到函数的地址