利用pyinstaller打包.py文件遇到的小问题【新手】

今天分享一个我自己遇到的关于利用pyinstaller打包.py文件遇到的一些小问题

    • 1.无法利用pip下载
    • 2.补充(2020.10.18补)
    • 3.两种解决方法
      • ①输入代码解决
      • ②利用pip换源
    • 4.打包后的问题
      • ①pywin32的安装
      • ②.exe文件一闪而过
    • 5.尾言

1.无法利用pip下载

利用pyinstaller打包可执行的.py文件时,会遇到几个问题。
首先,这是源头上会遇到的问题,遇到这个问题的时候,可能会遇到一大片红色的报错。
利用pyinstaller打包.py文件遇到的小问题【新手】_第1张图片
遇到这种情况,可以尝试输入提示我们的python -m pip install --upgrade pip来进行更新,但有可能还是会报错。

2.补充(2020.10.18补)

前几天电脑摄像头模组坏了,重装系统换过模组之后,再次安装python又出现了同样的问题,但我想刚刚安装的python应该不会出问题,所以我就更新了一下pip:python -m pip install --upgrade pip,结果我发现更新是可以进行的,不会有报错,所以我重新打开试了一下,又可以继续安装了。

我也不知道是为什么,可能这只是少数情况,不过可以先尝试一下更新pip,重新打开或者重启电脑,如果不行的话,再用下面两种方法。

3.两种解决方法

①输入代码解决

依次在cmd.exe中输入以下代码:

easy_install pip

会得到以下结果

Searching for pip
Best match: pip 9.0.1
Removing pip 8.1.2 from easy-install.pth file
Adding pip 9.0.1 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip3.5 script to /usr/local/bin
Installing pip3 script to /usr/local/bin
 
Using /usr/local/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip

再输入

pip install --upgrade pip

会得到

Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages

接着再输入

pip install distribute

会得到

Requirement already satisfied: setuptools>=0.7 in /usr/lib/python2.7/dist-packages (from distribute)
Building wheels for collected packages: distribute
  Running setup.py bdist_wheel for distribute ... done
  Stored in directory: /root/.cache/pip/wheels/ef/17/3f/3f837ef0521dcfb5da75a00488fef1ac1747d74edbddeb27e6
Successfully built distribute
Installing collected packages: distribute
Successfully installed distribute-0.7.3

这样一来,就可以解决一部分的人的问题了,可以用 pip install pyinstaller尝试下载了。

②利用pip换源

在cmd.exe中输入pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
按回车,就可以用最简单的方法给pip换源,这样也可以解决一些问题。
可以再尝试pip install pyinstaller进行安装。

4.打包后的问题

下载好pyinstaller之后,就可以在cmd.exe中运行代码,注意不是在python代码中!
下面是pyinstaller一些常用的语法:

-h,–help 查看该模块的帮助信息
-F,-onefile 产生单个的可执行文件
-D,–onedir 产生一个目录(包含多个文件)作为可执行程序
-a,–ascii 不包含 Unicode 字符集支持
-d,–debug 产生 debug 版本的可执行文件
-w,–windowed,–noconsolc 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,–nowindowed,–console 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,–out=DIR 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,–path=DIR 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME,–name=NAME 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

上面是一些语法,就像我这样的小白而言,最常用pyinstaller -F onepath
例如: pyinstaller -F D:\HwPy\ZH.py
自动生成到C盘dist文件夹中,如果想更改生成目标文件地址,可以输入以下代码:

Pyinstaller -F D:\HwPy\ZH.py --distpath=D:\dist 

这样,生成的可执行文件就会保存在D:\dist文件夹中。

后面更改的目标文件是先前就要创建好的,而直接生成不修改目标地址的话,dist文件是自动生成。
生成后是这样:
利用pyinstaller打包.py文件遇到的小问题【新手】_第2张图片

①pywin32的安装

生成文件之后,也会遇到一点小问题:

第一次使用的时候会提示没有安装相关的依赖(这个窗口会一闪而过)
运行.exe文件的报错
所以我们就要按照他的提示,在cmd界面输入

Pip install pywin32-ctypes

但是他会提示你已经安装并且给你一个文件地址
所以我们要再次安装,输入:

Pip install pywin32

这才完成依赖的安装。

②.exe文件一闪而过

安装完成之后,运行生成的.exe也会遇到点小问题:
这是源代码
源代码
但是生成.exe之后再运行,发现hello一闪而过。

这是因为在生成的.exe文件中,程序运行结束自动关闭,或者是回车自动结束。

所以我们要在代码结尾加上input(),来让我们的窗口一直保持。
优化后代码
这样,再打包之后,运行结果是这样的:
结果
这就成功啦!

5.尾言

第一次写,python小白一个,只是想分享自己遇到的小问题和解决方法,还请大佬们指教。

参考:pip install xxxx报错(一大堆红色exception)【解决】
参考:切换pip源的简便方法
(部分转自参考,侵删)

你可能感兴趣的:(pyinstaller,新手,pip安装,python)