Python打包成exe和Mac中可执行app

2019-03-02 10:55:20   Python
  Python  

Windows-exe

环境: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-app

环境: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的名字,实在不行根据你的文件夹找找。

vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/107
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册

亲情非友情链接