www.weide1946.compython的py文件打包成exe,将Python打包

2019-05-03 22:40 来源:未知

导言:

  我们有时候需要将做好的Python程序打包成为一个exe , 方便我们使用,查找了资料发现 pyinstaller 、py2exe,最后还是选择的pyinstaller,用的时候踩过了挺多的坑,在这里记录一下具体的用法。安装的时候直接在cmd pip install pyinstaller 即可。下面就是我在安装的时候遇到的一些问题。

python的py文件打包成exe,

一、首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装路径,比如是:“D:python27Scriptspip.exe”) 我的Anaconda2安装在G盘所以用如下路径--执行语句:pip.exe install PyInstaller cmd 进入python安装目录(cd “G:Anaconda2Anaconda2Scripts”) www.weide1946.com 1 www.weide1946.com 2 使用pip安装的另一个好处是,pip会自动安装这个第三方包需要的依赖模块(比如,这里帮我们下载了pypiwin32这个依赖)。 www.weide1946.com 3 www.weide1946.com 4 二、启动cmd将py文件打包成exe文件 pyinstaller文件夹位于:G:Anaconda2Anaconda2Libsite-packages (如果没有安装Anaconda2,只装了python,那么pyinstaller应该位于【你的安装目录python27Libsite-packages】) (1)在site-packages文件夹下新建文件夹myexe用来存放要做成exe的py文件 (2)命令提示符进入到myexe文件夹; (3)命令提示符输入:pyinstaller -F 文件名.py;注意空格和大小写;【例如pyinstaller -F mytest.py】 (4)在文件夹内将生成若干文件,其中exe文件在dist文件夹中。 www.weide1946.com 5 三、遇到的问题及解决办法: 1、使用pyinstaller打包时程序报错ImportError: The ‘packaging’ package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution. 解决办法:setuptools包的版本太高,环境里的setuptools版本是20.x.x。果断卸载并安装低版本的setuptools(19.2),如下:

pip uninstall setuptools
pip install setuptools==19.2

www.weide1946.com 6 2、但是在运行pip uninstall setuptools时 报错,找不到“easy-install.pth”文件,于是采用手工卸载的方式:去Python的第三方模块或包的存放位置进行手工删除文件和文件夹,然后删除easy-install.pth文件中的相应的行。(发现问题在于我安装的是Anaconda2,而不是单纯的python,所以目录跟默认的目录不一样,用uninstall的方法找不到easy-install.pth,因为在Anaconda2里,steuptools的安装信息在单独的一个名称为setuptools.pth的文件里,把steuptools的包和该setuptools.pth都删掉,就可以了) 参考博文: 3、pip install setuptools == 19.2 问题解决 4、其间还遇到过打包时找不到某个包的问题,网上有人说提示缺哪个包就在py文件里import,然后再去python的安装目录下的site-package里找到对应的包复制到pyinstaller文件所在的同一目录下,但是我后来发现如果用pip的方式安装pyinstaller就没有这个问题。   参考:  

一、首先需要安装Pyinstaller--使用pip来安装模块(我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是py...

①在cmd中输入 pip install pyinstaller 来安装pyinstaller,等待安装完毕。

血泪史:

②安装完毕后,在cmd中输入 pyinstaller.exe -F 你的.py文件的路径。例:pyinstaller.exe -F E:pythontest.py(-F为附加的参数,效果为只输出单个的exe文件,更多的参数百度都可以找到)

  安装过程:

    我在安装的时候是通过pip安装pyinstaller ,没想到这一路旅程这么艰辛。

    首先是在安装的时候提示下面的信息,则是pip版本太低, 要更新pip , 按照提示执行:   python -m pip install --upgrade pip

    You are using pip version 9.0.3, however version 10.0.1 is available.
    You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    输入完指令以后提示Requirement already up-to-date: pip in c:python36libsite-packages,  然后查看Pip版本的时候依然是原先的版本。

      解决方法为删除指定文件夹下面的 c:python36libsite-packages   site-packages 文件夹, 然后再次执行   python -m pip install --upgrade pip

    输入完以后我以为万事大吉,然而,太年轻,系统提示我pip   No module named pip  可是我明明安装了Pip还升级了的, 我此刻内心真的是。。。 你懂的经过百度老师的教导,使用如下办法解决

    python -m ensurepip
    easy_install pip

    这个时候就可以了, pip --version 是最新版本, 很舒服。如果不是,再次执行 python -m pip install --upgrade pip。

    pip install pyinstaller   安装成功 ~~ 

③exe文件生成位置将会显示在cmd结果的倒数第二行,文本为"Appending archive to EXE 输出目录"

  使用:

    首先声明一下我使用的Pychram进行开发的,使用的模块也都是通过pychram安装的,我首先在cmd中包,打包命令 pyinstaller -F test.py  参数 -F表示只生成一个exe文件,打包过程很顺利,但是点击的时候控制台总是一闪而过,  然后也是百度老师告诉我 .xxx.exe 可以查看报错, 发现是指定的modle没有找到。此时网上查找内容发现要用参数 -p 来导入指定包所在的文件夹  pyinstaller -F -p E:pythonclpicdownloadvenvLibsite-packages test.py 。加上参数以后顺利执行成功~~~ 撒花撒花,以后可以直接双击执行了,更加方便。

  

④输出时出现 IndexError: tuple index out of range 错误提示

 

 

原因是下载来的pyinstaller不支持python3.6,去下载最新版本覆盖即可。

下载地址:pyinstaller/pyinstaller

进入网页后点击绿色的"clone or download"按钮,选择download zip进行下载,将压缩包中的PyInstaller文件夹覆盖到PyInstaller的安装目录(建议覆盖前做好备份):

C:Users用户名称AppDataLocalProgramswww.weide1946.com,PythonPython36Libsite-packagesPyInstaller

覆盖完成后再次输出即可生成EXE。

附:-F参数能不用就尽量不用,打包一时爽,打开花5秒。

版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于网络编程,转载请注明出处:www.weide1946.compython的py文件打包成exe,将Python打包