我已经在移动设备上成功嵌入了python,但是现在如何包含python库,如urllib?如何在C++应用程序中嵌入python库?
此外,我怎样才能包括我自己的Python脚本没有PYTHONPATH?
(请注意:蟒蛇未安装此系统上)
我已经在移动设备上成功嵌入了python,但是现在如何包含python库,如urllib?如何在C++应用程序中嵌入python库?
此外,我怎样才能包括我自己的Python脚本没有PYTHONPATH?
(请注意:蟒蛇未安装此系统上)
最简单的方法是创建一个包含你需要和添加到您的进程的PYTHONPATH环境变量(通过setenv()
)的所有Python代码的.zip文件在初始化嵌入式Python解释器之前。可以通过将.pyd库添加到与.zip相同的目录并在PYTHONPATH中包括该目录来使用.pyd库。
如果您混合使用c-runtime版本,则setenv()
调用的使用可能会在Windows上造成麻烦。我花了很多时间学习,setenv()
只设置了您的编译器附带的c-runtime版本的环境变量。因此,例如,如果Python是使用VC++ 2005构建的,而您的编译器是VC++ 2008,则需要使用其他机制。浏览py2exe和/或PyInstaller的源代码可能会为您提供更好的解决方案(因为您的工作与这些工具基本相同),但一个简单的替代方法是使用PyRun_SimpleString()
来从内部设置模块搜索路径来“作弊” Python本身。
snprintf(buff, "import sys\nsys.path.append("%s")\n", py_zip_filename)
PyRun_SimpleString(buff)