python的编译有多种好处,其中主要有提高运行速度、代码保密
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
解决:
文件名改成英文
方式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
解决:
文件名改成英文