运行 Python 脚本而不出现 Windows 控制台
- 2025-02-20 09:22:00
- admin 原创
- 30
问题描述:
有没有办法在 Windows XP 中运行 Python 脚本而不暂时出现命令 shell?我经常需要使用 Python 自动化 WordPerfect(用于工作),即使我的脚本没有输出,如果我从没有 WP 的地方执行它,空 shell 仍然会弹出一秒钟然后消失。有什么办法可以防止这种情况发生吗?也许是某种输出重定向?
解决方案 1:
pythonw.exe 将在没有命令提示符的情况下运行脚本。问题在于 Python 解释器 Python.exe 与控制台子系统相链接以生成控制台输出(因为 90% 的情况都是如此)——pythonw.exe 与 GUI 子系统相链接,除非 Windows 要求,否则它不会为其创建控制台输出窗口。
本文讨论了使用 Python 进行 GUI 编程,还提到了 pythonw.exe。它还很有帮助地指出,如果您的 Python 文件以 而不是 结尾.pyw
,.py
则标准 Windows 安装程序将正确设置关联并在 pythonw.exe 中运行您的 Python。
在您的情况下,这听起来不像是一个问题,但是对 pythonw.exe 的依赖会使您的应用程序特定于 Windows - 存在其他解决方案可以在 Mac OS X 上实现这一点。
解决方案 2:
如果您使用“.pyw”扩展名命名文件,则 Windows 将使用 pythonw.exe 解释器执行它们。这不会打开 dos 控制台来运行您的脚本。
解决方案 3:
这将适用于所有 Windows 版本:
1.使用记事本(或任何其他文本编辑器)创建“ Runner.bat ”文件并插入以下内容:
@echo off
python server.py
其中server.py是您要运行的 Python 脚本的路径。
2.用记事本创建“ RunScript.vbs ”文件并插入以下内容:
CreateObject("Wscript.Shell").Run "runner.bat",0,True
3.双击运行“ RunScript.vbs ”文件,你的 Python 脚本将会运行,并且不会出现任何可见的控制台窗口
ps 我知道这不是您问题的一部分,但通常情况下,如果您想在 Windows 启动时(用户登录后)运行脚本,只需将“ RunScript.vbs ”文件的快捷方式粘贴到您的启动文件夹中。 (在 Windows 10 上主要位于:C:\Users[USERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)
此致
解决方案 4:
我尝试了上述方法,但由于脚本中的计时器,控制台仍然会出现并很快消失。最后,我找到了以下代码:
import ctypes
import os
import win32process
hwnd = ctypes.windll.kernel32.GetConsoleWindow()
if hwnd != 0:
ctypes.windll.user32.ShowWindow(hwnd, 0)
ctypes.windll.kernel32.CloseHandle(hwnd)
_, pid = win32process.GetWindowThreadProcessId(hwnd)
os.system('taskkill /PID ' + str(pid) + ' /f')
解决方案 5:
在 Win10 中非常简单:
打开 PowerShell 并输入以下命令:
type nul > openWindowed.vbs
type nul > main.py
notepad openWindowed.vbs
将以下内容粘贴到您的openWindowed.vbs文件中:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:Userspath omain.py" & Chr(34), 0
Set WshShell = Nothing
.vbs文件将执行您的main.py文件而无需打开 cmd。我经常将其用于make.py文件,因为我不懂 cmake 脚本。
解决方案 6:
关闭窗口保护程序。然后pyinstaller
使用 安装包pip install pyinstaller
。
安装后打开cmd并输入pyinstaller --onefile --noconsole filename.py
解决方案 7:
将文件扩展名更改为 .pyw,并将以下行(根据您的 Python 版本进行更改)添加到脚本的开头:
#! c:\\Users\\sohra\\AppData\\Local\\Programs\\Python\\Python38\\pythonw.exe
现在,如果双击该文件,它将由 pythonw.exe 执行,而无需控制台窗口。
解决方案 8:
通过python.exe运行stanza
良好,但使用pythonw.exe则失败。更糟糕的是,没有可行的机制来输出到或。因此,我编写了以下C#程序来在没有命令窗口的情况下启动 python:sysout
`syserr`
public class Program
{
private string python = @"D:LibsPython38Python38_64python.exe";
private string args = "mdx_server.py";
private string wkDir = "D:\\Program Files\\mdx-server";
public static void Main(string[] args) {
Program app = new Program();
Console.WriteLine(app.python + " " + app.args + " " + app.wkDir);
app.Exec();
Console.WriteLine("Start done!");
}
private void runThread() {
Process process = new Process();
try {
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.Arguments = args;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = python;
process.StartInfo.WorkingDirectory = wkDir;
process.StartInfo.UseShellExecute = false;
process.Start();
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
public void Exec() {
Thread _worker = new Thread(runThread);
_worker.Start();
}
}
解决方案 9:
我认为 Windows 中有两个选项:
选项 1
1. 将文件扩展名更改`.py`为 。`pyw`并将其第一行替换`python.exe`为`pythonw.exe`,如下所示(注意替换`<your_username>\\<your_path_to>`):
#! C:\\Users\\<your_username>\\<your_path_to>\\Scripts\\pythonw.exe
2. 双击`.pyw`脚本文件运行它。
3. 或者,您还可以创建文件的**快捷方式**`.pyw`,以自定义其**名称**、**图标**和**键盘快捷键**作为*最终启动器*!
选项 2
1. 保留`.py`文件扩展名并在第一行替换`pythonw.exe`为,如下所示(注意替换为):`python.exe``<your_username>\\<your_path_to>`
#! C:\\Users\\<your_username>\\<your_path_to>\\Scripts\\python.exe
2. 使用`.vbs`具有以下内容的(Visual Basic Script)文件作为`.py`文件的启动器(您可以使用`.vbs`文件来启动`.bat`文件而不显示提示):
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:Users<your_username><your_path_to>Scriptspython.exe C:Users<your_username><your_path_to>script.py", 0, True
Set WshShell = Nothing
3. 双击`.vbs`文件来运行`.py`脚本。
4. 或者,您还可以创建文件的**快捷方式**`.vbs`,以自定义其**名称**、**图标**和**键盘快捷键**作为*最终启动器*!
解决方案 10:
当您安装Pyinstaller时,您将能够将 .py 转换为 .exe。在设置中,您可以更改是否显示运行文件时 python 打开的控制台窗口。
解决方案 11:
我也遇到了同样的问题。我尝试了很多方法,但都失败了。但我尝试了这个方法,它神奇地起作用了!
因此,我在一个文件夹中有这个 python 文件 (mod.py),我曾经使用命令提示符运行当我关闭 cmd 时,gui 会自动关闭.....(SAD),因此我按如下方式运行它 C:....>pythonw mod.py
不要忘记pythonw
“w”是 IMP