我正在尝试嵌入 python,并提供 dll 和 python 库的 zip,并且不使用任何已安装的 python。也就是说,如果用户没有 python,我希望我的代码能够使用提供的 dll/zip 来工作。
This post https://stackoverflow.com/questions/1387906/c-with-python-embedding-crash-if-python-not-installed似乎描述了这个过程,但它对我不起作用。
如果我运行以下命令,只要我有 Python27.dll 和一个,我的代码就会运行folder名为 Python27,包含 DLL 和 Lib 文件夹。
Py_SetProgramName(argv[0]); /* optional but recommended */
Py_SetPythonHome("Python27");
Py_Initialize();
如果我删除 Python27 文件夹,代码就会失败 - 所以我拉入本地副本,而不是任何已安装的 python。
但是,如果我压缩本地 Python27 文件夹,代码将停止运行,并给出“ImportError:没有名为 site 的模块”。
PEP273 http://www.python.org/dev/peps/pep-0273/听起来这应该可行,但我尝试的一切都失败了。
任何人都可以阐明如何让嵌入式 python 从 zip 文件运行吗?
鉴于有一些相关问题尚未得到解答,我认为如果人们能够成功地从 zip 文件中读取内容并添加评论,即使他们不确定我可能需要修复什么,也会很有帮助。
这至少可以帮助我理解我是否应该继续寻找答案!
Update:无论我尝试什么(即使按照建议使用 LoadLibrary),我都可以从完全解压的目录运行我的程序。每当我删除包含 DLLs/* 和 Lib/* 的目录并放入 Python27.zip 时,我都会得到
ImportError: No module named site