在虚拟环境中使用 Python 运行 CGI 时弹出 Windows CMD 窗口

Windows CMD window popping up when CGI is run with Python in virtual env

提问人:aguijonazo 提问时间:9/9/2023 最后编辑:aguijonazo 更新时间:9/9/2023 访问量:37

问:

我需要在 Windows 10 上的 Apache 上运行用 Python 编写的 CGI 脚本。我观察到每次执行时都会弹出一个 CMD 窗口几分之一秒,但只有当脚本中的 shebang 指向使用 venv 创建的虚拟环境中的 Python.exe 时,而不是当它指向创建虚拟环境的原始安装(Python3.8)中的 Python.exe 时。

我知道我可以使用 Pythonw.exe 抑制 CMD 窗口,但我想根据其 sys.executable 值从交互式 Python 脚本设置 shebang。因为它是一个交互式程序,所以我不能用 Pythonw.exe 运行它。

我想了解为什么虚拟环境中的 Python.exe 的行为不同,以及是否有不依赖于 Pythonw.exe 的解决方法。

python windows apache cgi python-venv

评论

0赞 Karl Knechtel 9/9/2023
几乎可以肯定的是,无论哪种方式,它都会“出现”,只是根据必须完成的工作量,它可能会也可能不会在屏幕上停留足够长的时间,以至于无法被显示器刷新实际捕获,更不用说被人眼注意到了。也就是说,我不完全确定你所说的“一个”CGI是什么意思;这是一种非常老式的 Web 服务方法。
0赞 aguijonazo 9/9/2023
@KarlKnechtel - 我的意思是 CGI 脚本,或者由 CGI 运行的脚本。我知道它很旧。它是作为我在学校教授的课程的材料提供给我的。这门课程既不是关于 Python 也不是关于 Web 应用程序,而是关于 DB。他们使用一个简单的 Web 应用程序来展示 DB 在内部的工作方式。我想这是因为数据库操作的效果更容易以这种方式看到。
0赞 WombatPM 9/9/2023
我发现 python 使用 WSL 表现得更好
0赞 aguijonazo 9/10/2023
@KarlKnechtel - 我在我的 CGI 脚本中添加了一行让睡眠几秒钟,看看你说的是不是这样。事实证明,CMD窗口显示,只要睡眠,虚拟环境中只有Python.exe。行为明显不同。

答: 暂无答案