zoukankan      html  css  js  c++  java
  • 使用PyInstaller2将Python脚本转化为可执行文件(上安装部分)

    最近使用Python为项目开发一款测试工具。因为使用者在另一个部门,领导希望能把Python脚本发布为脱离Python平台运行的可执行程序,最好是单个的exe文件,同时也保护我们部门的源码。PyInstaller恰满足这个需求。目前PyInstaller的最新版本是2.0,支持Python2.7。本文将讨论怎样安装PyInstaller2并使其正常工作。文中提到的所有工具都能下载到。本文博客园balian原创,欢迎转载,转载请说明原作者。

    下面的截图来自PyInstaller官方网站PyInstaller.org。本文来自博客园balian。笔者使用的是Windows 7平台,下载zip版本的PyInstaller,下载后文件名为pyinstaller-2.0.zip,将这个文件解压缩到需要的文件夹就可以执行,不需要安装。PyInstaller并不区分操作系统是32位还是64位,对Python是否为32位还是64位亦无要求。

    image

    安装PyInstaller前,需要这样一些准备:安装Python,安装Python Win32 Extensions,以及最好能有压缩工具UPX。

    关于Python,参见下图,红色箭头所示为32位版本,下载文件名是python-2.7.3.msi。蓝色箭头所示为64位版本,下载后文件名是python-2.7.3.amd64.msi。显然,如果你是32位Windows XP,你只能安装python-2.7.3.msi。如果你是64位Windows 7,则可以根据需要选择两者之一。Python的安装略过。

    image

    注意,Python安装完成以后,需要将Python的安装目录加入到系统的环境变量中。如下图。

    image

    关于Python Win32 Extensions,最新版本是Build 2.18。官网地址http://starship.python.net/~skippy/win32/Downloads.html。下图红色箭头所示是32位版本。显然,如果选择了运行于64位windows的Python,也请使用对应版本的PyWin。Pywin的安装略过。

    image

    接着就是解压缩PyInstaller。比如,将文件解压到c:\pyinstaller2。

    关于UPX,最新版本UPX 3.08,见下图,官网地址http://upx.sourceforge.net/。只有红色箭头所示一个文件下载,文件名是upx308w.zip,并且无所谓32位还是64位操作系统。本文来自博客园balian。请解压这个文件,在解压后的文件夹中找到文件upx.exe,将这个文件直接拷贝到PyInstaller的安装文件夹里。,比如c:\pyinstaller2。

    image

    综合以上,如果使用PyInstaller打包工具,有32位和64位两种解决方案。

    方案一:如果是32/64位Win XP或者32/64位Win 7(本文写作按照该方案。)
    安装python-2.7.3.msi
    安装pywin32-218.win32-py2.7.exe
    解压pyinstaller-2.0.zip
    拷贝upx.exe

    方案二:如果是64位Win XP或者64位Win 7
    安装python-2.7.3.amd64.msi
    安装pywin32-218.win-amd64-py2.7.exe
    解压pyinstaller-2.0.zip
    拷贝upx.exe

    按照方案一安装结束后,安装文件夹c:\pyinstaller2应如下图。

    image

    现在就可以从命令行来打包py脚本了。PyInstaller 2.0和以前的版本有一些不同,使用者不需要预先运行Configure.py或者生成spec文件。

  • 相关阅读:
    Linux 线程的互斥和等待 pthread_mutex_lock/pthread_mutex_unlock pthread_cond_wait/pthread_cond_signal
    Ubuntu12.10 双显卡过热问题
    Ubuntu apt-get 无法使用的问题
    Unload Java JNI DLL
    python笔记(19)--面向对象三大特性补充
    python笔记(18)--类的命名空间、实例化绑定方法和类的组合用法
    python笔记(17)--初识面向对象和三大特性(封装/继承/多态)
    python笔记(16)--迭代器、生成器和logging模块
    python笔记(15)--模块扩展(time/json/shutil/logging)和异常捕获处理
    python笔记(14)--内置模块(json重要)
  • 原文地址:https://www.cnblogs.com/balian/p/2780503.html
Copyright © 2011-2022 走看看