我正在用Python编写IRC bot.
我希望为Linux和Windows制作独立的二进制文件.主要是我希望当机器人启动时,控制台窗口应该隐藏,用户不应该看到窗口.
我能做些什么?
mde*_*dec 100
只需使用.pyw扩展名保存即可.这将阻止控制台窗口打开.
在Windows系统上,没有"可执行模式"的概念.Python安装程序会自动将.py文件与python.exe相关联,这样双击Python文件就会将其作为脚本运行.扩展名也可以是.pyw,在这种情况下,通常显示的控制台窗口被抑制.
Cha*_*tin 30
在linux中,只需运行它,没问题.在Windows中,您希望使用pythonw可执行文件.
好的,如果我在评论中理解了这个问题,你就会问如何在命令行中启动机器人的命令窗口随后消失?
$ nohup mypythonprog&
C:/>启动pythonw mypythonprog
我认为这是对的.无论如何,现在你可以关闭终端了.
noɥ*_*ɐɹƆ 17
使用nohup mypythonprog &,您可以在不中断过程的情况下关闭终端窗口.exit如果您在云中运行并且不想保留挂起的shell进程,也可以运行.
使用.pyw扩展程序保存程序,现在它将打开pythonw.exe.没有shell窗口.
例如,如果有foo.py,则需要将其重命名为foo.pyw.
小智 10
如果您只想在安装了Python解释器的Windows计算机上运行Python脚本,那么将保存的脚本的扩展名从".py"转换为".pyw"就可以了.
但是,如果您使用py2exe将脚本转换为可在任何Windows机器上运行的独立应用程序,则需要对"setup.py"文件进行以下更改.
以下示例是使用Tkinter创建的简单python-GUI:
from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
options = { 'py2exe' : {'packages':['Tkinter']}})
Run Code Online (Sandbox Code Playgroud)
将上面代码中的"console"更改为"windows"..
from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
options = { 'py2exe' : {'packages':['Tkinter']}})
Run Code Online (Sandbox Code Playgroud)
这只会打开Tkinter生成的GUI而不会打开控制台窗口.
这将隐藏您的控制台。首先在代码中实现此行,以便首先开始隐藏控制台。
import win32gui, win32con
The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
Run Code Online (Sandbox Code Playgroud)
一些额外的信息。对于需要 Mohsen Haddadi 在本主题前面发布的 win32gui 解决方案的情况:
从 python 361 开始, win32gui 和 win32con 不是 python std 库的一部分。要使用它们,需要安装 pywin32 包;现在可以通过 pip。
有关 pywin32 包的更多背景信息位于:How to use the win32gui module with Python?.
此外,为了在关闭窗口时应用自由裁量权,以免无意中关闭前景中的任何窗口,可以按照以下方式扩展分辨率:
try :
import win32gui, win32con;
frgrnd_wndw = win32gui.GetForegroundWindow();
wndw_title = win32gui.GetWindowText(frgrnd_wndw);
if wndw_title.endswith("python.exe"):
win32gui.ShowWindow(frgrnd_wndw, win32con.SW_HIDE);
#endif
except :
pass
Run Code Online (Sandbox Code Playgroud)
编写代码后,您想要将文件从 转换.py为.exe,因此您可能会使用pyinstaller并且制作文件很好exe。所以你可以通过这种方式隐藏控制台:
pyinstaller --onefile main.py --windowed
Run Code Online (Sandbox Code Playgroud)
我曾经用过这种方法并且有效。
| 归档时间: |
|
| 查看次数: |
111139 次 |
| 最近记录: |