Pythonexe实际应用的八大步骤

开发 后端
本文主要是介绍 Pythonexe之一计算机语言在实际应用的过程中的实际步骤,主要分为八个步骤,以下是相关实际应用用步骤的介绍。

 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文件。#t#

3. 删除d:\pythonlib目录中所有的.py和.pyc文件,因为我们只要有.pyo文件就可以让这些库运行了。
4. 删除目录中所有用不着的文件,比如curses,test,idlelib,msilib等,以减少生成文件的体积。

5. 把这些库打包成一个zip文件,比如stdlib.zip,放到d:\dist目录中
6. 把c:\python25\dlls目录中的.pyd和.dll文件,复制到d:\dist\dlls目录中,当然,删除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以减少文件的体积

7. 把自己写的程序,也按步骤2至步骤5所说的方法,打成一个mysrc.zip包,放到d:\dist目录中。 注意:自己写的程序的入口应该是main.pyo文件
8. 用以下C程序编译出一个可执行文件,比方说叫runpy.exe,也放到d:\dist中。

  1. #include <Python.h>   
  2. #include <Windows.h>   
  3. #include <stdlib.h>   
  4. #include <stdio.h>   
  5.  
  6. int main()   
  7. {   

得到当前可执行文件所在的目录

  1. char szPath[10240];   
  2. char szCmd[10240];   
  3. GetModuleFileName(NULL, szPath, sizeof(szPath));   
  4. char* p = strrchr(szPath, '\\');   
  5. if (p == NULL)   
  6. {   
  7. printf("Get module file name error!\n");   
  8. return -1;   
  9. }   
  10.  
  11. *p = 0;   
  12.  

设定运行时的PATH

  1. sprintf(szCmd, "PATH=%s\\dlls;%%PATH%%", szPath);   
  2. _putenv(szCmd);   
  3.  

把sys.path设定为['.', '自己的源代码zip文件', '标准库zip文件', 'dll目录']
然后调用main模块

  1. sprintf(szCmd,   
  2. "import sys\n"   
  3. "sys.path=['.', r'%s\\mysrc.zip', r'%s\\stdlib.zip', r'%s\\dlls']\n"   
  4. "import main\n",   
  5. szPath, szPath, szPath);   
  6.  
  7. Py_OptimizeFlag = 2;   
  8. Py_NoSiteFlag = 1;   
  9. Py_Initialize();   
  10. PyRun_SimpleString(szCmd);   
  11. return 0;   
  12. }   

以上是对手动Pythonexe可执行程序的实际步骤的介绍。

责任编辑:佚名 来源: IT专家网
相关推荐

2023-05-10 14:26:24

云迁移云计算

2012-07-30 09:20:50

2010-03-12 15:29:19

Pythonexe

2010-03-10 15:54:33

Python读写文件

2013-04-02 10:37:53

2015-01-19 14:56:53

SaaS应用云应用移动互联

2023-09-13 23:15:08

物联网应用物联网

2011-04-29 11:08:00

激光打印机

2018-11-09 10:52:03

HBase应用场景

2012-02-28 09:57:32

机房空调

2009-06-22 14:07:46

JSF优势

2014-03-21 09:22:42

2018-08-01 23:33:15

物联网交通领域IOT

2012-11-28 09:48:56

2011-11-18 09:49:48

2010-05-25 14:31:05

远程链接MySQL

2011-04-29 09:15:16

Servlet

2024-04-24 09:52:19

云技能云迁移云计算

2011-09-05 13:17:46

百度移动应用掌上百度

2023-05-31 12:01:22

点赞
收藏

51CTO技术栈公众号