Skip to content
/ PyStand Public
forked from skywind3000/PyStand

🚀 Python Standalone Deploy Environment !!

License

Notifications You must be signed in to change notification settings

yunluo/PyStand

 
 

Repository files navigation

PyStand

Python 独立部署环境。Python 3.5 以后,Windows 下面都有一个 Embedded Python 的独立 Python 运行环境,这个 PyStand 就是配合 Embedded Python 使用的。

特性介绍

  • 使用 PyStand + PyQt5 精简版发布 PyQt 程序,打包大小只有 14MB。
  • 使用 PyStand 发布普通 Python 程序,打包大小仅 5MB。

功能说明

  • Windows 下独立 Python 环境的启动器。
  • 自动加载 PyStand.exe 同级目录下面 runtime 子目录内的 Embedded Python。
  • 自动启动 PyStand.exe 同级目录下面的 PyStand.int 程序(Python 代码)。
  • 如果改名,会加载对应名称的 .int 文件,比如改为 MyDemo.exe 就会加载 MyDemo.int
  • 窗口程序,无 Console,但是如果在 cmd.exe 内运行,可以看到 print 的内容。
  • 会自动添加 PyStand.exe 同级目录下的 site-packages 目录,库可以放到里面。

使用方式

  • 用 CMake 生成 PyStand.exe (或者到 Release 里下个现成的)。
  • 下载 Python Embedded 版本,放到 PyStand.exe 所在目录的 runtime 子目录内。
  • 注意 Python Embedded 如果是 32 位,PyStand 配置 CMake 时也需要指明 -A Win32
  • PyStand.exe 所在目录创建 Python 源代码 PyStand.int。
  • 双击 PyStand.exe 就会运行 PyStand.int 里的代码。
  • 可以编译成命令行版方便调试,CMake 的时候加 -DPYSTAND_CONSOLE=ON 即可。

常见问题

安装依赖

用一个同 Embedded Python 相同版本的 Python 做一个 venv,然后 pip 独立安装好模块后将 site-packages 内对应的包复制到 PyStand.exesite-packages 下直接使用。

查看错误

如果在 cmd.exe 内部运行 PyStand.exe 可以看到标准输出和标准错误。不过推荐的做法是 PyStand.int 里尽量精简,比如:

import main
main.main()

把你的主程序写到 main.py 里面,用你常规方式把程序调试通顺了,然后再在 PyStand.intimport 一下即可,实在 PyStand.int 有错误,再到命令行下面去运行 PyStand.exe 查看错误。

MessageBox

PyStand 添加了一个 os.MessageBox(msg, title) 的接口,可以用来简单显示个对话框。

更换图标

可以替换 appicon.ico 文件并重新编译 PyStand.exe ,或者使用 Resource Hacker 直接 替换 Release 内下载的 PyStand.exe 文件的程序图标。

脚本组织

可以在 PyStand.exe 同级目录新建一个 script 文件夹,将脚本放进去,PyStand.int 里面就是添加一下 sys.path 然后 import 即可。

发布打包时将 script 文件夹用 zip 压缩成 script.egg 文件,PyStand.int 里检测到该文件存在就加入到 sys.path,然后再 import

静态入口

部分网友有个需求,担心用户把可执行文件改名,但 .int 文件没改名导致出错的问题,因此增加了一个名为 _pystand_static.int 的入口文件,在 PyStand 主程序启动时,如果检测到在主程序同目录下存在该文件,则会优先加载,不存在才回去找 PyStand.int 文件。

这样主程序就允许随意改名了,只要把入口写在 _pystand_static.int 中即可。

使用例子

这个回答里我说了详细的用法以及 PyInstaller 的优缺点:

更多的用法可以见 Release 下面的例子。

常见问题

其他用户使用中碰到什么疑问?如何解决的?

碰到疑问不妨快速过一下。

About

🚀 Python Standalone Deploy Environment !!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 92.0%
  • CMake 6.5%
  • Python 1.5%