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盘啊。。请问这种问题要怎么解决?谢谢
...全文
1014 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
WoHuiLa 2022-07-28
  • 打赏
  • 举报
回复

请问楼主怎么解决的,我也遇到了呜呜

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试试

37,742

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧