embedPy安装版本检测报错及python3路径修改求助
解决embedPy安装时的Python版本检测错误与路径指定问题
问题概述
安装embedPy 1.5.0时,执行测试命令q test.q报错'embedPy requires python 3.6 or higher on windows',但本地已安装Python 3.12。同时q.p))system"where python3"返回的是WindowsApps目录下的快捷方式,需要将其指定到Python 3.12的实际安装路径。
相关命令输出
q.p))system"where python3" "C:\\Users\\a623\\AppData\\Local\\Microsoft\\WindowsApps\\python3.exe" q.p))system"where python" "C:\\Users\\a623\\AppData\\Local\\Programs\\Python\\Python312\\python.exe" "C:\\Users\\a623\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe"
报错详情
M:\M\embedPy_windows-1.5.0>q test.q KDB+ 4.0 2022.01.14 Copyright (C) 1993-2022 Kx Systems ++++++++++++++++++++++++++++++++++++++++++++++++++++ Loading custom startup. Customize in C:/q/q.q Start timestamp (local): 2024.04.01D09:36:01.173696000 Full display precisions: \P 0 C:/q/help.q C:/q/c/odbc.k C:/q/ps.k 'embedPy requires python 3.6 or higher on windows [5] M:\M\embedPy_windows-1.5.0\p.q:10: c:"-c \"",pr["'.'.join([str(getattr(__import__('sys').version_info,x))for x in ['major','minor']])"],"\"2>",$[o="w";"nul <nul";"/dev/null"]; if[(o="w")and `3.6>`$first@[system"python3 ",;c;{system"python ",c}];'"embedPy requires python 3.6 or higher on windows"]; ^ c:"-c \"",pr[$[o="w";sc["/python";`BINDIR`VERSION];sc["/libpython";`LIBDIR`LDVERSION]],"+'",$[o="w";".dll";o="l";".so";".dylib"],"'"],pr["__import__('sys').base_prefix"],pr["__import__('sys').prefix"],pr["__import__('sys').executable"],"\"2>",$[o="w";"nul <nul";"/dev/null"];
问题原因
embedPy的p.q脚本优先调用python3命令,但WindowsApps目录下的python3.exe是无效快捷方式,无法正确返回版本信息,导致版本检测失败;同时系统python3命令指向错误路径。
解决方法
1. 修正python3命令指向
- 打开命令提示符,先删除原有的
python3.exe快捷方式:del "C:\Users\a623\AppData\Local\Microsoft\WindowsApps\python3.exe" - 创建硬链接指向Python 3.12的实际路径:
mklink "C:\Users\a623\AppData\Local\Microsoft\WindowsApps\python3.exe" "C:\Users\a623\AppData\Local\Programs\Python\Python312\python.exe" - 或者将Python 3.12的安装目录(
C:\Users\a623\AppData\Local\Programs\Python\Python312)移到系统环境变量PATH的最顶端,让系统优先识别正确的Python版本。
2. 修改embedPy版本检测逻辑(临时方案)
如果不想修改系统命令指向,可直接修改p.q脚本:
- 打开
M:\M\embedPy_windows-1.5.0\p.q,找到第10行的版本检测代码:if[(o="w")and `3.6>`$first@[system"python3 ",;c;{system"python ",c}];' "embedPy requires python 3.6 or higher on windows"]; - 将代码修改为直接调用
python命令(你的python已指向正确版本):if[(o="w")and `3.6>`$first@[{system"python ",c}];' "embedPy requires python 3.6 or higher on windows"]; - 保存后重新执行
q test.q测试。
3. 验证修改效果
执行以下命令确认python3路径已更新:
q.p))system"where python3"
返回C:\Users\a623\AppData\Local\Programs\Python\Python312\python.exe即为成功,之后运行q test.q可正常启动。
内容的提问来源于stack exchange,提问作者mmv456
相关产品推荐
相关产品推荐

