Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何分发C++;哪个应用程序调用Python? 我知道有一些方法可以从C++调用Python,比如Python/C API或BooSt.python。我的问题是,如何分发应用程序?例如,用户是否仍然需要在其机器上安装Python和Python包_Python_C++ - Fatal编程技术网

如何分发C++;哪个应用程序调用Python? 我知道有一些方法可以从C++调用Python,比如Python/C API或BooSt.python。我的问题是,如何分发应用程序?例如,用户是否仍然需要在其机器上安装Python和Python包

如何分发C++;哪个应用程序调用Python? 我知道有一些方法可以从C++调用Python,比如Python/C API或BooSt.python。我的问题是,如何分发应用程序?例如,用户是否仍然需要在其机器上安装Python和Python包,python,c++,Python,C++,可能的步骤可以是: 1,通过Python/C API或Booost。python从源代码中调用C++的Python。 2、将Python/C库与应用程序结合在一起 我希望经过这两个步骤,我的应用程序将是一个独立的软件。用户只需将应用程序文件夹复制到未安装Python的任何其他机器上即可 请注意,由于许可证问题,我无法使用PyInstaller。在尝试使用“Nuitka”使Python部分自包含时,我也遇到了一些问题。所以我现在尝试直接调用C++中的Python。我知道它将在我的开发人员机器上运行

可能的步骤可以是: 1,通过Python/C API或Booost。python从源代码中调用C++的Python。 2、将Python/C库与应用程序结合在一起

我希望经过这两个步骤,我的应用程序将是一个独立的软件。用户只需将应用程序文件夹复制到未安装Python的任何其他机器上即可

请注意,由于许可证问题,我无法使用PyInstaller。在尝试使用“Nuitka”使Python部分自包含时,我也遇到了一些问题。所以我现在尝试直接调用C++中的Python。我知道它将在我的开发人员机器上运行。但需要确认的是,该解决方案还可以使应用程序自包含,并且不会要求用户安装Python

更新:现在我觉得如果我用Python/C从C++调用Python,我需要做一些事情来让我的应用程序自给自足: 1,我需要将所有需要的运行时与我的应用程序一起带来。(当然是C++运行时,还有python_version.dll) 2,我需要在我的应用程序中部署一个Python解释器。只需从Python安装中复制Python文件夹并删除一些不需要的文件(如头文件、lib文件)


3、使用Py_SetPythonHome函数指向应用程序中复制的Python解释器。

我认为您的思路是正确的。基本上,您应该获得一个Python(共享或静态)库,用它编译您的程序,当然还应该将您的Python依赖项与您的程序捆绑在一起。我读过的最好的文档可以在这里找到:。大致来说,这个过程是:

  • 从Python.org获取一个Python库,并使用
    /configure--enable shared
    (我相信省略
    --enable shared
    只会生成
    Python
    二进制文件)进行编译
  • 编译你的程序。让它引用
    Include
    下的标题并链接库。请注意,您可以获得所需的编译器和链接器标志,如下所述
  • 使用例如
    PyRun\u SimpleString()
    或C API中的其他函数从应用程序中调用Python代码。请注意,如果您使用Python标准库中的任何功能,您也可能会依赖它(在发行版的
    Lib
    下)

  • 如果您静态地链接Python,那么现在您已经完成了,除了绑定您所依赖的任何Python代码之外,我不确定这是否与您的情况相关。

    Python C/C++API的主要重点是编写Python模块。因此,它被设计为从Python调用,而不是反过来。我认为这会给您带来相当多的麻烦。@ifconfig这与OP的用例相反。OP正在从C++调用Python,你的链接是关于从Python调用C++的。好吧,删除。我相信DokKER是你正在寻找的。我强烈建议你不要要求用户安装正确的Python版本。这成了技术支持的噩梦。除非您是通过Linux包管理器分发,否则一定要捆绑您自己的Python解释器。