Python编译成exe

python的编译有多种好处,其中主要有提高运行速度、代码保密

方式1:编译成pyc文件(二进制的文件)

速度有所提高。我的一个代码从150s变成了130s。

操作方法:打开cmd,进入py文件的目录,输入下面命令
           python3 -m py文件名
           python3 -O -m py_compile py文件名  #这个也可以
      完成后,当前目录下会出现一个__pycache__文件夹,编译后的二进制文件pyc就在里面
 
方式2:编译成exe文件
一、首先安装 pyinstaller
命令:
    pip3 install pyinstaller
二、安装完成后,开始使用。进入要编译的py文件所在目录
    pyinstaller ./py文件名  #效果是有一堆的文件在dist文件夹下
    如果要编译成一个文件:
    pyinstaller --console --onefile ./py文件名  #在dist文件夹下只生成一个exe文件。
    
初次运行,可能会出现 failed to create process,这是pip3的bug,路径的空格不能正常识别
解决:
    进入C:\Program Files\python\3.5\Scripts,可以看到有一个pyinstaller-script.py和pyinstaller.exe
    文本编辑器打开pyinstaller-script.py.第一行的代码申明是这样的
    #!c:\program files\python\3.5\python3.exe
    加一个引号变成:#!"c:\program files\python\3.5\python3.exe"
重新运行编译命令,即可。

从运行速度上看,.exe和.pyc一样。但都大于py文件。exe文件的兼容性更好把,.pyc需要电脑安装有编译时相同的python版本。(.pyc的生成速度很快)

问题解答:
1.编译成pyc,还会出现.没有_path_属性的错误
"Error while finding spec for 'fibo.py' (: 'module' object has no attribute 'path')"
这是因为编译时,不应该使用
    python3 -m kill2next.py  #kill2next是文件名
.py表示该模块(py)在包kill2next当中
正确方法:
    python3 -m kill2next  #不要带后缀

2.exe编译失败:
UnicodeDecodeError:"gbk" codec can't decode byte 0xaa in position 160:illegal multibyte sequence
解决:
文件名改成英文


   
展开阅读全文

没有更多推荐了,返回首页