Closed alairack closed 2 years ago
我自己测试的结果是没问题的, 你可以到命令行下面去实际运行一下,看看什么报错吧?
命令行没有任何输出
win10可以正常运行
会不会是 vc runtime files 的缺失?是最新版本的 PyStand 么?不应该啊。 真奇特,用 os.MessageBox 跟踪下 traceback ??
我尝试过1.04,1.03,1.02版本,都不行
你先试试最原始的 PyStand:
https://github.com/skywind3000/PyStand/releases/download/1.0.4/PyStand-py38.7z
能否正常运行,确定到底是 PyStand 的问题,还是加上了 Qt 的问题。
好的
还是一样的
这两台win7机器都是service pack 1 ,可能缺少运行库
我把pystand.int的内容改为了print("hello world") 命令行并没有输出
装一下 vcredist 2005-2022 试试。
装了,还是那样:no_mouth:
我实在没你的环境,要不你自己编译调试下?
可以装个win7 sp1的虚拟机试试
我就是虚拟机试的
我在干净的 Win7 SP1 简体中文版环境里试了一下,遇到一些问题。其中一个问题是 ctypes 无法被正确导入,导致 MessageBox 那里报错。经过搜索,我发现了这个 issue:official embedded Python fails to import certain modules
Python 文档里也有提到这一点: https://github.com/python/cpython/pull/23322/files
When running on Windows 7, Python 3.8 requires the KB2533623 update to be installed. The embeddable distribution does not detect this update, and may fail at runtime. Later versions of Windows include this update.
遇到了同样的问题,@skywind3000 我在本地将pystand改为 console 程序,在 win7 上调试发现示例程序跑步起来的原因是代码获取 PYSTAND_SCRIPT 环境变量报错。
我检查了 pystand.cpp ,分别在 161 行 和 285 行 设置了 PYSTAND_SCRIPT 其中,在 161 行设置的环境变量为空字符串
我将这一行注释后,解决了内嵌 Python 代码运行找不到 ‘PYSTAND_SCRIPT’ 的问题。继续运行 pystand.exe 在 pyqt5 的 init:44 报错: 找不到指定的程序(猜测是剪裁版 pyqt5所致),我将 pystand.int
内容改写为 print('hello')
后,运行正常
CC: @alairack
遇到了同样的问题,@skywind3000 我在本地将pystand改为 console 程序,在 win7 上调试发现示例程序跑步起来的原因是代码获取 PYSTAND_SCRIPT 环境变量报错。
我检查了 pystand.cpp ,分别在 161 行 和 285 行 设置了 PYSTAND_SCRIPT 其中,在 161 行设置的环境变量为空字符串 我将这一行注释后,解决了内嵌 Python 代码运行找不到 ‘PYSTAND_SCRIPT’ 的问题。继续运行 pystand.exe 在 pyqt5 的 init:44 报错: 找不到指定的程序(猜测是剪裁版 pyqt5所致),我将
pystand.int
内容改写为print('hello')
后,运行正常CC: @alairack
顶。我们的做法一致:https://github.com/myd7349/PyStand/commit/434a43d6f5da8a40260a9d1dd1050864033537c6
我使用 @albertofwb 修复后的程序,问题迎刃而解
遇到了同样的问题,@skywind3000 我在本地将pystand改为 console 程序,在 win7 上调试发现示例程序跑步起来的原因是代码获取 PYSTAND_SCRIPT 环境变量报错。
我检查了 pystand.cpp ,分别在 161 行 和 285 行 设置了 PYSTAND_SCRIPT 其中,在 161 行设置的环境变量为空字符串 我将这一行注释后,解决了内嵌 Python 代码运行找不到 ‘PYSTAND_SCRIPT’ 的问题。继续运行 pystand.exe 在 pyqt5 的 init:44 报错: 找不到指定的程序(猜测是剪裁版 pyqt5所致),我将
pystand.int
内容改写为print('hello')
后,运行正常CC: @alairack
遇到了同样的问题,@skywind3000 我在本地将pystand改为 console 程序,在 win7 上调试发现示例程序跑步起来的原因是代码获取 PYSTAND_SCRIPT 环境变量报错。 我检查了 pystand.cpp ,分别在 161 行 和 285 行 设置了 PYSTAND_SCRIPT 其中,在 161 行设置的环境变量为空字符串 我将这一行注释后,解决了内嵌 Python 代码运行找不到 ‘PYSTAND_SCRIPT’ 的问题。继续运行 pystand.exe 在 pyqt5 的 init:44 报错: 找不到指定的程序(猜测是剪裁版 pyqt5所致),我将
pystand.int
内容改写为print('hello')
后,运行正常 CC: @alairack顶。我们的做法一致:myd7349@434a43d
看上去在 win7 上调用 SetEnvironmentVariableW 无法覆盖已有变量? 但是我在 win7 cmd 窗口下
set a=""
set a="123"
echo %a%
可以看到变量的值。这可能是 SetEnvironmentVariableW
在 win7 下的特殊表现吧
@albertofwb ,我这里还是没法重现,那么 SetEnvironmentVariableW 的返回值是多少?能不能看一下?再看一下 GetLastError() 的返回码是多少?到底是什么错误。
我加了一个断点,第二次 SetEnvironmentVariableW 的调用也是返回 TRUE 的。
_script
变量的值是多少呢?正常么?
一个想法: CMakeLists.txt 增加一个选项,允许将 PyStand 编译为一个纯 console application。因为:
先解决这个问题吧,为啥上面截图中 _script
的值是一个空字符串?
3.8 对 win7 兼容不好可以退回 3.7,或者用这个家伙编译的支持 win7 的 python3.10:
On Wed, Mar 2, 2022 at 18:41 myd7349 @.***> wrote:
我加了一个断点,第二次 SetEnvironmentVariableW 的调用也是返回 TRUE 的。
— Reply to this email directly, view it on GitHub https://github.com/skywind3000/PyStand/issues/7#issuecomment-1056776182, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABNATLDPV7JXXZ2MKIB5ZG3U55AT7ANCNFSM5PTHYURQ . You are receiving this because you were mentioned.Message ID: @.***>
你真快,我刚下班回家啊,想着远程到公司的电脑去看一下结果,由于windows10升级到了11在Mac上用 Microsoft remote desktop连不上了。
既然是这么个情况,那么就可以在class初始化之前先获取事先脚本的路径。
这样也免得两次设置同一个环境变量了
先解决这个问题吧,为啥上面截图中
_script
的值是一个空字符串?3.8 对 win7 兼容不好可以退回 3.7,或者用这个家伙编译的支持 win7 的 python3.10:
因为你在 CheckEnviron 函数里没有初始化 _script
变量
把第一個設置 PYSTAND_SCRIPT 給去掉了,麻煩再試試。
https://github.com/skywind3000/PyStand/commit/e43804236647d76eb7309be9163d811ba64a8e3d
如果這個更新沒問題,我就用它再發佈一個新的 release
先解决这个问题吧,为啥上面截图中
_script
的值是一个空字符串?3.8 对 win7 兼容不好可以退回 3.7,或者用这个家伙编译的支持 win7 的 python3.10:
我认为不是python版本的问题,我用python3.6.8在win7上也有同样的问题
把第一個設置 PYSTAND_SCRIPT 給去掉了,麻煩再試試。
如果這個更新沒問題,我就用它再發佈一個新的 release
这个没问题
https://github.com/skywind3000/PyStand/releases/tag/1.0.5
新版本已经发布。
@alairack 我读了一下 https://bugs.python.org/issue42339 里的描述,似乎 python 3.7.9 是没问题的,对裸的 win7 似乎是 OK 的,我在 1.0.5 的 release 里放了一个 python 3.7.9 的 embed 包,你可以测试一下行不行。
我自行编译的x64版本pystand.exe在win7 x64 sp1机器上运行正常
那问题解决了?嫌弃版本低的话,我推荐你直接试试:
https://github.com/NulAsh/cpython
这个人把 python3.9, python3.10 移植回 win7 了。有 embeded 版本。
那问题解决了?嫌弃版本低的话,我推荐你直接试试:
https://github.com/NulAsh/cpython
这个人把 python3.9, python3.10 移植回 win7 了。有 embeded 版本。
是的,解决了,我还在用python3.6😂
我下载了示例程序(32位),在两台win7 x86 和 x64 实机运行Pystand.exe后,没有任何反应,命令行也没有任何输出。把pystand.int文件删除可以正常报错。