一、简要

py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,目的就是在没有安装python的windows系统上运行这个可执行程序。
py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。

py2exe是发布在开源许可证下的。

二、如何安装py2exe

可以直接在命令行下面执行

easy_install py2exe

 来进行安装

然后使用按照如下方法进行测试

 

E:\>python
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import py2exe
>>>

 

如果没有任何报错,那么就证明安装成功了

但是注意,这里经常见到这样的报错:

  no module named machinery

这是因为,我们安装的py2exe版本太高了,py2exe模块0.9版本只支持python3以上,要想在python2.7中运用,就要下载0.6 版本的py2exe,地址如下:

http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/

或者执行 

easy_install py2exe-0.6.9.win32-py2.7.exe

通常情况下使用easy_install 下载并不好用,还是需要在官网下面下载下来。

在官网下载的时候,要注意,选择合适的版本,

32位的下载  py2exe-0.6.9.win32-py2.7.exe

64位的下载py2exe-0.6.9.win64-py2.7.amd64.exe

官网和easy_install 都安装不上去的,可以在下面的网址去下载:

http://download.csdn.net/detail/qiqiyingse/9799260

但是再官网下载下来之后,我们再安装的时候还是会遇到下面的问题:


Python version 2.7 required, which was not found in the registry 

解决方案一(针对32bit):

       最简单的方法是将已安装的64bit的python卸载、重新安装32bit。


解决方案二(针对64bit):

 对于想用python64bit不想更换回32bit的,需要借助一些其他人开发的库,这里收集了很多python官方不支持的扩展包 

Unofficial Windows Binaries for Python Extension Packages;

解决方案三(极力推荐)

在 py2exe-0.6.9.win32-py2.7.exe 已经下载完成的时候

建立一个文件 register.py 内容如下. 然后执行该脚本.

import sys
  
from _winreg import *
  
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
  
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)
  
def RegisterPy():
    try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    except EnvironmentError as e:
        try:
            reg = CreateKey(HKEY_CURRENT_USER, regpath)
            SetValue(reg, installkey, REG_SZ, installpath)
            SetValue(reg, pythonkey, REG_SZ, pythonpath)
            CloseKey(reg)
        except:
            print "*** Unable to register!"
            return
        print "--- Python", version, "is now registered!"
        return
    if (QueryValue(reg, installkey) == installpath and
        QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print "=== Python", version, "is already registered!"
        return
    CloseKey(reg)
    print "*** Unable to register!"
    print "*** You probably have another Python installation!"
    
if __name__ == "__main__":
    RegisterPy()

它执行完毕之后,再去安装这个东西,就OK了

 三、py2exe的使用

自己创建一个为helloworld.py的python脚本,如果你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,

那么首先你应写一个用于发布程序的设置脚本例如setup.py,在其中的setup函数前插入语句import py2exe 。
mysetup.py示例如下:

from distutils.core import setup
import py2exe
  
setup(console=["helloworld.py"])



然后按下面的方法运行
mysetup.py:

 

python setup.py py2exe


 
上面的命令执行后将产生一个名为dist的子目录,其中包含了helloworld.exe,python24.dll,library.zip这些文件。
如果你的helloworld.py脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll文件。
dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。

默认情况下,py2exe在目录dist下创建以下这些必须的文件:
1、一个或多个exe文件。
2、python##.dll。 
3、几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。
4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo
上面的mysetup.py创建了一个控制台的helloword.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["helloworld.py"]替换为windows=["myscript.py"]既可。

py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有用的。
运行下面个命令,将显示py2exe命令的所有命令行标记。

python setup.py py2exe --help


easy_install py2exe-0.6.9.win32-py2.7.exe
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐