• 全部
  • 互动交流
  • 文章分享

python中pyinstaller打包时出现的问题,跪求大神帮助

love_nicole 2020-12-05 04:37:47
C:\Users\Administrator>pyinstaller -F D:\python VIP\chap16\stusystem
39 INFO: PyInstaller: 4.1
39 INFO: Python: 3.9.0
39 INFO: Platform: Windows-10-10.0.18362-SP0
40 INFO: wrote C:\Users\Administrator\python.spec
41 INFO: UPX is not available.
script 'C:\Users\Administrator\VIP\chap16\stusystem' not found

好不容易安装了Pyinstallers,按照视频中老师的代码敲的,为什么路径会显示在c盘?明明在D盘啊。。请问这种问题要怎么解决?谢谢
...全文
219 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
love_nicole 2020-12-30
感谢,你好厉害哦
回复
crifan 2020-12-23
虽然你问题已解决,但估计你对于问题根源,没有足够的了解。所以专门详细解释:

用`PyInstaller`去打包python程序,用命令:

```bash
C:\Users\Administrator>pyinstaller -F D:\python VIP\chap16\stusystem
```

结果出错:

```bash
39 INFO: PyInstaller: 4.1
39 INFO: Python: 3.9.0
39 INFO: Platform: Windows-10-10.0.18362-SP0
40 INFO: wrote C:\Users\Administrator\python.spec
41 INFO: UPX is not available.
script 'C:\Users\Administrator\VIP\chap16\stusystem' not found
```

其中很明显就是:

`-F`参数所传入的路径`D:\python VIP\chap16\stusystem`中间有空格

导致实际结果相当于:

```bash
C:\Users\Administrator>pyinstaller -F D:\python
```

而此处很明显Windows中只存在目录`D:\python VIP`,而(估计)不存在`D:\python`

所以导致最后报错找不到相关目录:

```bash
script 'C:\Users\Administrator\VIP\chap16\stusystem' not found
```

**根本原因**:

各种系统(Windows、Linux、Mac等)中的路径,往往是通过空格去区分参数的

```bash
your_command parameter1 parameter2
```

不论是:

* 命令行环境
* 代码运行环境

中,所以,如果路径中有空格,往往会导致路径被空格区分开,变成多个参数,导致传入的路径本身不对,且后续其他参数也不正常了,导致结果异常

对于此处的`pyinstaller`的[命令行参数语法](https://pyinstaller.readthedocs.io/en/stable/man/pyinstaller.html)是:

```bash
~  pyinstaller --help
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
[--add-data <SRC;DEST or SRC:DEST>]
[--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
[--hidden-import MODULENAME]
[--additional-hooks-dir HOOKSPATH]
[--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
[--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
[--noupx] [--upx-exclude FILE] [-c] [-w]
[-i <FILE.ico or FILE.exe,ID or FILE.icns>]
[--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
[--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
[--win-no-prefer-redirects]
[--osx-bundle-identifier BUNDLE_IDENTIFIER]
[--runtime-tmpdir PATH] [--bootloader-ignore-signals]
[--distpath DIR] [--workpath WORKPATH] [-y]
[--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
scriptname [scriptname ...]
...
```

此处如果输入:

```bash
pyinstaller -F D:\python VIP\chap16\stusystem
```

其实变成了:

* 参数1:`-F D:\python`
* 参数2:`VIP\chap16\stusystem`

对应着:

* `-F`参数的值是:`D:\python`
* `scriptname`参数的值是:`VIP\chap16\stusystem`

很明显,不是我们希望的结果了,就会导致异常报错了。

**解决办法**:尤其是命令行操作时,或者代码调用传入的路径时,要确保传入的路径中不能包含空格

如果路径中包含空格,则可以**用(双)引号括起来**:

```bash
pyinstaller -F "D:\python VIP\chap16\stusystem"
```

这样就是我们希望的效果了:

* 参数1:`-F "D:\python VIP\chap16\stusystem"`

即:

* `-F`参数的值是:`D:\python VIP\chap16\stusystem`

即可正常运行。

更多内容详见:
路径中包含空格 · Python新手小白常见错误和问题
回复
love_nicole 2020-12-22
谢谢哦,成功了呢
回复
weixin_45903952 2020-12-11
好像用加P路径就可以,或在环境变量里设置
回复
sanGuo_uu 2020-12-09
你路径里有个空格——python VIP 把空格改掉试试 (D:\python VIP\chap16\stusystem)这个东西,它应该是识别成2个了: D:\python VIP\chap16\stusystem
回复
慕飒潇湘 2020-12-09
进到文件对应的目录打包,不要接路径什么的
回复
清风未明月 2020-12-09
先进入安装包的文件夹,然后再运行pyinstall试试
回复
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2020-12-05 04:37
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: