求助:将Python文本游戏转为EXE及解决管理员权限运行问题
解决Python游戏转EXE被杀毒拦截及管理员权限问题
一、解决PyInstaller被Total AV拦截的问题
- 将PyInstaller加入杀毒白名单:打开Total AV的白名单设置,把Python安装目录下的
Scripts\pyinstaller.exe,以及你打包时生成的dist、build文件夹路径添加进去,避免杀毒软件拦截打包流程。 - 调整PyInstaller打包参数:
- 放弃
--onefile单文件打包(这类文件容易被杀毒误报),改用--onedir生成文件夹形式的程序:pyinstaller --onedir your_game_script.py - 如果是纯文本游戏不需要图形窗口,可加上
--noconsole参数(需要保留控制台交互则忽略):pyinstaller --onedir --noconsole your_game_script.py
- 放弃
- 换用低误报率的打包工具:比如Nuitka,它会把Python代码编译为C再生成EXE,能大幅降低杀毒误报概率。先安装工具:
再执行打包命令(以控制台程序为例):pip install nuitkapython -m nuitka --standalone your_game_script.py
二、让Python脚本自动请求管理员权限
如果不想打包,让好友直接运行Python脚本,可在游戏代码最开头添加以下代码,启动时自动检测权限并请求管理员身份:
import ctypes import sys def is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False if not is_admin(): # 以管理员身份重新启动脚本 ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) sys.exit() # 你的游戏代码从这里开始编写
添加后,好友双击运行脚本时,系统会弹出UAC权限请求框,确认后即可正常以管理员身份运行,解决文件写入权限问题。
内容的提问来源于stack exchange,提问作者Finn Sayers
相关产品推荐
相关产品推荐

