Pythonexe实际应用的八大步骤是怎样的
Pythonexe实际应用的八大步骤是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
实际步骤
注:假设python安装在c:\python25目录中,***的可执行文件放到d:\dist目录中
1. 先去c:\python25\Lib目录,把所有文件都复制出来,比如复制到d:\pythonlib目录中
2. 开一个cmd窗口,进入d:\pythonlib目录中,运行 python -OO compileall.py -f . 把lib中的.py文件都编译成.pyo文件。
删除d:\pythonlib目录中所有的.py和.pyc文件,因为我们只要有.pyo文件就可以让这些库运行了。
4. 删除目录中所有用不着的文件,比如curses,test,idlelib,msilib等,以减少生成文件的体积。
把这些库打包成一个zip文件,比如stdlib.zip,放到d:\dist目录中
6. 把c:\python25\dlls目录中的.pyd和.dll文件,复制到d:\dist\dlls目录中,当然,删除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以减少文件的体积
把自己写的程序,也按步骤2至步骤5所说的方法,打成一个myclass="lazy" data-src.zip包,放到d:\dist目录中。 注意:自己写的程序的入口应该是main.pyo文件
8. 用以下C程序编译出一个可执行文件,比方说叫runpy.exe,也放到d:\dist中。
#include <Python.h> #include <Windows.h> #include <stdlib.h> #include <stdio.h> int main() {
得到当前可执行文件所在的目录
char szPath[10240]; char szCmd[10240]; GetModuleFileName(NULL, szPath, sizeof(szPath)); char* p = strrchr(szPath, '\\'); if (p == NULL) { printf("Get module file name error!\n"); return -1; } *p = 0;
设定运行时的PATH
sprintf(szCmd, "PATH=%s\\dlls;%%PATH%%", szPath); _putenv(szCmd);
把sys.path设定为['.', '自己的源代码zip文件', '标准库zip文件', 'dll目录']
然后调用main模块
sprintf(szCmd, "import sys\n" "sys.path=['.', r'%s\\myclass="lazy" data-src.zip', r'%s\\stdlib.zip', r'%s\\dlls']\n" "import main\n", szPath, szPath, szPath); Py_OptimizeFlag = 2; Py_NoSiteFlag = 1; Py_Initialize(); PyRun_SimpleString(szCmd); return 0; }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341