环境:Windows、Python 3.6
首先进入命题提示符
1.windows键(小窗形状的键)+r
2.输入cmd回车
安装pyinstaller,前提是安装了pip,没安装pip的先安装pip
pip install pyinstaller
进入要打包的py文件的目录,我的是桌面也就是Desktop
cd Desktop
执行打包
pyinstaller test.py
pyinstaller -F test.py # 加-F参数会生成exe文件,不加是一个散的文件夹
pyinstaller -F --icon=test.ico test.py # 添加自定义的图标
最终在当前目录的dist文件夹下生成一个文件夹和一个exe(加-F参数),双击运行即可
环境:Mac OS、Python3.6
打开Mac自带的terminal,安装了iterm2的使用iterm2也可以,从开发软件进入terminal也可以,总之就是进入命令行就对了。 安装py2app,同样需要pip
pip install py2app
进入到要打包的py文件的目录,然后执行
py2applet --make-setup test.py
执行上述命令后会生成一个setup.py,大概长这样
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['test.py']
DATA_FILES = []
OPTIONS = {}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'], install_requires=[]
)
如果自己的系统有环境,install_requires
可以不写,但是大多数情况大家都是为了在其他电脑也可以用而不用装环境,所以就需要把所有的东西都打包进去,比如我:
install_requires=['requests', 'bs4', 'lxml']
设置好依赖后执行打包
python setup.py py2app #加-A参数不打包依赖
生成的应用在当前目录的dist目录下
打包报错提示找不到dylib,用pyenv很多情况就会导致这种问题,尤其是3.5之后 可以试一下这个重装一下python
PYTHON_CONFIGURE_OPTS="--with-dtrace --enable-shared" pyenv install 3.6.2
上述方法不行的话,先去看看你有没有dylib,目测是这个目录
/usr/local/Cellar/python/3.6.2/Frameworks/Python.framework/Versions/3.6/lib
根据你的版本去寻找,类似于libpython3.6.dylib
或者 libpython3.6m.dylib
没有的话,执行命令安装:
brew install boost-python --with-python3
当你有了libpython3.6.dylib
或者 libpython3.6m.dylib
之后,进入报错的目录,也就是当前环境运行python的目录,通常是~/.pyenv/versions/版本号/lib
我的是:
/Users/vien/.pyenv/versions/3.6.2/lib
然后创建软连在这个目录下
ln -s /usr/local/Cellar/python/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib libpython3.6.dylib
如果是libpython3.6m.dylib
ln -s /usr/local/Cellar/python/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6m.dylib libpython3.6.dylib
如此便可以了
生成的文件执行报错,先试试把app移动到application中再用
如果再有错,八成是你依赖没有打包全,要么就是i你程序的错,这种情况就需要命令行运行生成的app,查看报错:
./dist/test.app/Contents/MacOS/test
在你的项目目录下,执行上述语句,其中test换成你的app的名字,实在不行根据你的文件夹找找。