杂记:pyinstaller 常用参数和可执行文件启动目录的注意事项

2023-05-16

pyinstaller 常用参数

所谓的常用参数,就是指:

  • 不想看详细帮助
  • 不关心版本。一来 pip list 就能知道版本,不需要专门记 pyinstaller 的参数。二来能用就行(达到生成 exe 的目的)
  • 不需要打包配置文件之类的额外资源。所谓的配置就是可用随时修改;其他的数据文件无论是什么格式还是需要程序读取解析——不像一般非脚本语言,StringTable 资源编译前 IDE 会处理,编译后处理过程自动带入 exe,程序直接使用。

那么最少要记住的参数(不分先后)如下:

  • <source_file>
    这个不要解释了,没源代码怎么生成 exe
  • [-D|-F]
    (默认)-D 除了主程序 exe,引用库之类的在同目录下生成多个文件。
    -F(推荐)只生成单独一个 exe 文件,现今不缺硬盘空间,这个方便管理。
  • [-c|-w]
    (默认) -c 控制台应用没什么好说的。针对用 tkinter 之类的有窗体应用,从控制台启动就关联输出到当前控制台,双击启动就在主窗体后开启了一个控制台。无论哪种启动,都可以随时用 print() 输出任意信息。建议这种模式生成 exe 作为调试版本。
    -w 双击启动主窗体后不会有控制台,建议生成 exe 作为正式版。程序中无需注释 print() 语句。

生成有以下输出:

  • build 子目录,应该是零时目录,删除
  • dist\*.exe 文件名去后缀和源代码文件名去后缀相同,移到上级目录(和源文件处于同一目录,配置文件之类的相对位置也就一致了)。dist 目录删除
  • 和源代码同目录、同名的 .spec文件,删除

启动目录的注意事项

.py 源代码执行时 sys.argv[0]__file__ 是相同的;变成 exe 执行后,前者还是 exe 文件(可能带路径),后者就指向了%temp%下的随机目录(虽然 .py 文件名照旧)。所以:

  • 始终用 os.path.dirname(os.path.abspath(sys.argv[0])) 取启动路径
  • 也不要用 sys.argv[0] 改/加后缀去合成配置文件。比如源文件是 some-app.py 配置用 some-app.config,如果 exe 被改了名变成 some-app.debug.exe 不就抓瞎了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

杂记:pyinstaller 常用参数和可执行文件启动目录的注意事项 的相关文章

随机推荐

  • 命令行输出的内容重定向保存到文件里

    文章目录 1 linux2 windows 1 linux 执行命令 xff0c 不管是python还是c 43 43 xff0c 只要是输出在命令行里的 xff0c 就可以使用重定向把输出的内容保存到一个文件里 例如 xff1a pyth
  • android studio unresolved reference:xx问题解决方案汇总

    android studio unresolved reference xff1a xx问题解决方案汇总 目录第一种 xff0c 重启法 xff0c clean 43 invalidate caches restart第二种 xff0c g
  • Router 选择

    Connected Dominating Set Example of a Connected Dominating Set Router 必须形成一个 CDS xff08 Connected Dominating Set xff0c 连接
  • devtool: unset _PYTHON_SYSCONFIGDATA_NAME

    问题 在 Ubuntu 20 04 1 LTS 上进行编译Yocto时报错 xff0c 出现如下错误 xff1a bb data smart ExpansionError Failure expanding variable SRCPV e
  • VsCode 配置PySide6及测试

    目录 VSCode插件安装安装Python插件安装PySide6插件 PySide6安装PySide6配置VSCode创建UI文件 在这里插入图片描述 https img blog csdnimg cn cbf7cd76d7d84048ab
  • Ubuntu 14.04 Desktop的Raid1安装总结

    Ubuntu 14 04 Desktop的Raid1安装总结 安装基于Ubuntu14 04 Desktop的Raid1 由于采用UEFI GPT方式作为系统启动方式 xff0c 在安装过程中出现了很多异常情况 本文记录安装的过程 安装步骤
  • sem_wait sem_post信号量操作进本函数

    sem wait sem post 信号量的数据类型为结构sem t xff0c 它本质上是一个长整型的数 函数sem init xff08 xff09 用来初始化一个信号量 它的原型为 xff1a extern int sem init
  • 常见gcc编译警告整理(开始)

    1 warning no newline at end of file 在文件最后一行加上回车键 解释 xff1a 在 Rationale for the C99 standard 一文中 xff0c 有C99的相关信息 xff1a A b
  • 对于结构体变量赋值的误区

    以前在使用结构体时没有在结构体变量之间直接赋值 xff0c 今天同事在查看别人的代码时 xff0c 发现有两个结构体变量直接赋值的语句当时感觉这个语句不对 xff0c 认为在一个结构体里边 xff0c 既有一般的无符号整形与数组 xff0c
  • 线程同步(互斥锁与信号量的作用与区别)

    信号量用在多线程多任务同步的 xff0c 一个线程完成了某一个动作就通过信号量告诉别的线程 xff0c 别的线程再进行某些动作 xff08 大家都在semtake的时候 xff0c 就阻塞在 哪里 xff09 而互斥锁是用在多线程多任务互斥
  • 误解程序运行(从单片机到开始)

    误解程序运行 从单片机到开始 关于程序的执行 xff0c 以前想的不多 xff0c 没有意识到一个程序在运行时 xff0c 从哪里读指令 xff0c 数据又写在哪里 最近在看CSAPP时这个念头经常在脑袋中晃荡 从单片机上知道 xff0c
  • ssh配置key后提示Server refused our key

    文章目录 1 确认问题2 解决问题 1 确认问题 参考 xff1a Putty Getting Server refused our key Error 为了确认ssh具体的错误 xff0c 可以去 etc ssh sshd config中
  • Out-of-Bounds Memory References and Buffer Overflow

    callee pushl edp save edp on stack movl esp edp pushl ebx save ebx subl 20 esp popl ebx restore ebx popl edp restore
  • 电子信息工程四年学习之思

    毕业后 xff0c 回顾四年学习历程发现 xff0c 当时以为的明白 xff0c 到现在都是那时的不明白 或许是自己的经历 xff08 参加比赛比较多 xff09 导致了现在的反思 但是 xff0c 回顾那个时候的课程设置 xff0c 却都
  • 将要到来的三大技术革命与联系

    http www csdn net article 2013 02 14 2814128 2013大数据 http www csdn net article 2013 02 15 2814135 bigdata is coming 大数据
  • Keil的常见编译警告

    1 warning 767 D conversion from pointer to smaller integer 解释 xff1a 将指针转换为较小的整数 影响 xff1a 可能造成的影响 xff1a 容易引起数据截断 xff0c 造成
  • 《大数据时代》之后

    现在想想也不记得当时是怎么找到 大数据时代 这本书的 xff0c 好像是在查找数据库方面的书 xff0c 看到亚马逊推荐的书里有这本 xff0c 发现最近才出版的就买一本回来看看 然而这个过程中 xff0c 其实自己已经得到了大数据带来的影
  • 《代码大全》笔记

    最近将去年毕业时 xff0c 大神推荐的 代码大全 看完了 xff08 已经过去一年了 xff0c 要十分感谢推荐 xff0c 还有凤林兄的 深入理解计算机系统 xff09 零零碎碎的时间 xff0c 发现很多东西虽然在书中标记了 xff0
  • 《编程精粹》思之代码与产品

    之前眼中有代码无产品 xff0c 现在眼中有产品有代码 xff0c 什么时候能做到有产品无代码 xff1f 还需要努力 刚开始实习的时候 xff0c 总喜欢在程序中使用 p 43 1 61 而不是p 1 来给入参 xff0c 甚至于用来给定
  • 杂记:pyinstaller 常用参数和可执行文件启动目录的注意事项

    pyinstaller 常用参数 所谓的常用参数 xff0c 就是指 xff1a 不想看详细帮助不关心版本 一来 pip list 就能知道版本 xff0c 不需要专门记 pyinstaller 的参数 二来能用就行 达到生成 exe 的目