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

  • Python常用模块种类的系统介绍
  • Pythonexe的实际操作步骤
  • Python字串查找要如何才能提高使用的速度
  • Python地图易用技巧的应用案例
  • Python默认参数如何才能进行求值操作

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可执行程序的实际步骤的介绍。

相关内容

    暂无相关文章

评论关闭