![v2-b17dd14bba354517891fd26a0498b719_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-b17dd14bba354517891fd26a0498b719_1440w.jpg?source=172ae18b)
本节介绍PyInstaller的其他一些基础命令,有些很常用,另一些知道下就好。
1. -h
该命令可以显示PyInstaller的帮助信息,使用后读者可以看到所有PyInstaller命令的用法和解释:
![v2-9789f673ec11fadfc0643f9f69f721c3_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-9789f673ec11fadfc0643f9f69f721c3_b.jpg)
2. -v
使用该命令可以查看当前所使用的PyInstaller的版本:
![v2-ca2971f2dc7d85c2b5673f1dc0ffc1c9_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-ca2971f2dc7d85c2b5673f1dc0ffc1c9_b.jpg)
3. -D
即文件夹模式打包,加与不加没有影响。
4. -n
使用该命令可以修改包含可执行文件的文件夹名称、可执行文件的名称以及spec文件的名称:
![v2-f4d5ec110e7b339b1ef5c5851f9d62b8_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-f4d5ec110e7b339b1ef5c5851f9d62b8_b.jpg)
![v2-837d811abbfa674aaced6466471102d9_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-837d811abbfa674aaced6466471102d9_b.jpg)
![v2-d72868af34bf9b53d7a9cd36eb794953_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-d72868af34bf9b53d7a9cd36eb794953_b.jpg)
![v2-ac12fef28cc909bb52557a8d31081c26_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-ac12fef28cc909bb52557a8d31081c26_b.jpg)
注:如果某个命令后面可以跟参数,我们可以在命令和参数之间加上等号,这样更加清晰,例如:
pyinstaller -n=good belle.py
或者带上引号
pyinstaller -n="good" belle.py
5. -y
当打包完毕后,我们可能会想修改下源码然后再次重新打包,那么第二次重新打包时PyInstaller会询问是否要移除之前已经生成的文件。
![v2-8b41481ccf3eb4b4b97b3816522bba7a_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-8b41481ccf3eb4b4b97b3816522bba7a_b.jpg)
如果输入y,则删除并生成新文件;输入n则停止打包。
![v2-39abe1fba76c728dd1e3b91fc5a12b65_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-39abe1fba76c728dd1e3b91fc5a12b65_b.png)
![v2-9454af4694a68e9d56e844ddb1f87236_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-9454af4694a68e9d56e844ddb1f87236_b.png)
但如果在第二次打包时加上-y命令的话(也就是不需要用户确认),PyInstaller就会直接删除之前的文件(夹)然后打包生成新文件(夹)。
![v2-322be9c4c916a4c1bcfb61eb7d3b81a7_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-322be9c4c916a4c1bcfb61eb7d3b81a7_b.jpg)
6. --distpath
使用该命令可以指定dist文件夹中可执行文件(及依赖)的生成路径,比方说笔者让dist文件夹中的内容在桌面上生成:
![v2-506ede96581fb86d1fceb43d18f426f1_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-506ede96581fb86d1fceb43d18f426f1_b.png)
可以发现项目路径下没有dist文件夹了,而桌面上出现了打包好文件夹,其中是可执行文件及其依赖(单文件模式打包的话则桌面上就是一个可执行文件):
![v2-ed0c3444d7db1f5b55c8797175713bba_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-ed0c3444d7db1f5b55c8797175713bba_b.jpg)
![v2-dde5e181a90a986a203fc7f6a00966b3_b.png](http://img-02.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-dde5e181a90a986a203fc7f6a00966b3_b.png)
![v2-0ba605c49648adcfa23001077f1bedf0_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-0ba605c49648adcfa23001077f1bedf0_b.jpg)
7. --workpath
该命令可以指定build文件夹中所有文件的生成路径,同理笔者也将其放到桌面上:
![v2-d667ba2bc5e0fcaedeed293bfa5e24b0_b.png](http://img-02.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-d667ba2bc5e0fcaedeed293bfa5e24b0_b.png)
8. --specpath
该命令指定spec文件的生成路径,同样放到桌面上演示下:
![v2-5d0953849d7f5bcb116871b9211389d4_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=99197d22-1b30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-5d0953849d7f5bcb116871b9211389d4_b.png)
9. --clean
在打包前先清理PyInstaller中的缓存并清除临时文件(如果读者要重新打包的话,建议加上该命令):
pyinstaller --clean belle.py
既然涉及到删除,PyInstaller肯定会询问用户是否确认执行,我们可以加上-y命令(详见-y命令讲解):
pyinstaller --clean -y belle.py
10. --hidden-import
打包结束后,在运行时我们常常会碰到以下错误:
ModuleNotFoundError: No module named xxx
出现这种问题的原因无非就两种:
1. 没有安装相应的模块,那么pip install xxx安装下即可
2. 已经安装了,但PyInstaller在打包时没有找到,这时候读者可以使用该命令来解决(xxx即模块名称):
pyinstaller --hidden-import=xxx belle.py
或者读者可以直接选择在源码中import相应的模块,当然我们还可以修改spec文件来解决(之后章节会讲)。