python-3.x Pyinstaller:- -noconsole出现错误,无法工作

332nm8kg  于 2023-02-17  发布在  Python
关注(0)|答案(1)|浏览(424)

我一直在尝试不同的解决方案,从所有的互联网和仍然没有找到一个解决方案,为我工作呢。
这是我使用的pyinstaller命令

pyinstaller --hidden-import "numpy.core._dtype_ctypes" --hidden-import "canmatrix.formats" --hidden-import "canmatrix.formats.dbc" --hidden-import "canmatrix.formats.arxml" --hidden-import "asammdf.blocks.cutils" --additional-hooks-dir=hooks --onefile --noconsole myscript.py

我的python脚本也使用一些cmd命令但是重定向输出不起作用

my code -- 

    import eel
    from pathlib import Path
    from asammdf import MDF
    from pathlib import Path
    import glob
    import sys
    import os
    from datetime import timedelta
    import subprocess
    
    eel.init("D:\SharedFolder\suprava\VS code\Python")
    @eel.expose
    def pythoncode():
        #python code ----
        #few cmd commands but redirecting the std 
        output doesnt work

eel.start("main.html")

.exe似乎在没有--noconsole选项的情况下工作得很好,但我不希望在终端中显示代码的标准输出。
我试着编辑service.py文件,就像互联网上其他解决方案建议的那样,但似乎效果不佳。

是否有办法在创建.exe文件后隐藏终端?

62lalag4

62lalag41#

当您使用--noconsole模式时,它会自动将您的sys.stdoutsys.stderr设置为None。所以如果你的代码或库使用日志或写消息到这些流中的任何一个,它将导致一个错误。通常类似于NoneType object has no attribute write。如果这是您收到的错误,那么您需要做的就是将sys.stdoutsys.stderr重定向到一个新的流,如打开的文件或io缓冲区。

import io
import sys

stream = io.StringIO()
sys.stdout = stream
sys.stderr = stream

只要让脚本尽可能早地运行该代码即可。

相关问题