无法嵌入python以使用zip’d库

无法嵌入python以使用zip’d库,第1张

概述我正在尝试嵌入 python,并提供 python库的DLL和zip,而不是使用任何已安装的python.也就是说,如果用户没有python,我希望我的代码能够使用提供的dll / zip工作. 这post似乎描述了这个过程,除了它不适合我. 如果我运行以下命令,只要我有Python27.dll和一个名为Python27的文件夹包含DLL和Lib文件夹,我的代码就会运行. Py_SetProgra 我正在尝试嵌入 python,并提供 python库的DLL和zip,而不是使用任何已安装的python.也就是说,如果用户没有python,我希望我的代码能够使用提供的dll / zip工作.

这post似乎描述了这个过程,除了它不适合我.

如果我运行以下命令,只要我有Python27.dll和一个名为Python27的文件夹包含DLL和lib文件夹,我的代码就会运行.

Py_SetProgramname(argv[0]);  /* optional but recommended */Py_SetPythonHome("Python27");Py_Initialize();

如果我删除Python27文件夹,代码失败 – 所以我拉入本地副本,而不是任何已安装的python.

但是,如果我压缩本地Python27文件夹,代码将停止运行,并显示“importError:No module named site”.

PEP273听起来应该只是工作,但我尝试过的一切都失败了.

任何人都可以阐明如何从zip文件中运行嵌入式python?

鉴于有相关的问题没有得到解答,我认为如果人们成功地从zip文件中读取文件,即使他们不确定我可能需要修复的内容,也会有所帮助.

这至少可以帮助我理解我是否应该继续寻找答案!

更新:无论我尝试什么(即使建议使用Loadlibrary),我也可以从完全解压缩的目录运行我的程序.任何时候我用DLLs / *和lib / *删除目录并放入Python27.zip,我只是得到

importError: No module named site
解决方法 我有两个问题.

没有详细记录的’Py_NoSiteFlag’修复了

importError: No module named site

第一个问题.接下来,我不得不更新路径.最后,我最终得到以下内容进行初始化:

Py_NoSiteFlag=1;Py_SetProgramname(argv[0]);Py_SetPythonHome(".");Py_InitializeEx(0);PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path = ['.','python27.zip','python27.zip/DLLs','python27.zip/lib','python27.zip/site-packages']");

[编辑以解决评论中的问题]
加载zip文件后,仍然需要将文件传递给python引擎.这是我使用的(不包括参数和文件存在检查).

PyObject* PyfileObject = Pyfile_FromString(argv[1],"r");int res = PyRun_Simplefile(Pyfile_Asfile(PyfileObject),argv[1]);

[/编辑]

总结

以上是内存溢出为你收集整理的无法嵌入python以使用zip’d库全部内容,希望文章能够帮你解决无法嵌入python以使用zip’d库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存