双击后,.exe在启动后立即关闭

时间:2015-08-05 10:09:25

标签: python cmd exe py2exe

我已使用exe模块创建了py2exe文件。奇怪的是它在我从命令行运行exe时必须工作,但是当我双击这个exe时,它会打开一个控制台(就像它必须这样做)和控制台立即关闭。

我写了一个logging方法来找出问题所在,并用try-except包围方法,但没有捕获任何异常。

这是我的一段代码:

if __name__ == '__main__':
    try:
        mh = moto()
        db = database() # you can find __init__ of database() below
        log('ok') # I CAN'T FIND THIS LINE IN THE LOG FILE SO THE PROBLEM IS PROBABLY INSIDE __INIT__ OD database()
    except Exception as e: 
        log(str(e))
        log(str(traceback.format_exc))

    for url in [__CATs__,__hyphens__]:
        log(' for url')

init database():

class database():

    def __init__(self):
            self.conn = sqlite3.connect('db.db') # Database is created
            self.cursor = self.conn.cursor()
            self.create_table_moto()
            self.drop_and_create_temp_table()
            log('init_end') # I CAN FIND THIS LINE IN LOG FILE SO THE PROBLEM SHOULD BE AFTER database() initialization but i doubt that because of the log right after database()

所以主要奇怪的是数据库()的__init__方法可能正常工作,因为我可以在我的日志文件中看到最后一行log('init_end')。但是在初始化之后的另一个日志是另一个日志log('ok'),我没有在日志文件中看到它并且没有捕获任何异常。

非常重要的编辑:

使用py2exe创建exe文件时,它会在项目存储的文件夹中创建一个文件夹dist。只有当我在这个父文件夹中时,才能使用cmd启动exe文件,因此我必须编写dist\moto.exemoto.exeproject\dist\moto.exe不起作用。 编辑:

另一个奇怪的事情:

我已经在mLib.printToFile('testovaci_txt.txt', 'nieco')之后添加了行log('ok'),该行无效,并且在' exe'的文件夹中创建了文件testovaci_txt.txt。和其他文件存储。

EDIT2:log方法位于site-packages内的外部库中。要确定log('ok')在哪里保存我创建的文件' log_2(' ok')'它会创建一个文件logging-testing.txt并在log('ok')之后将其放置并启动该程序。然后我在Windows中搜索了这个文件,它无法找到它。

你知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

这是设计的。

如果双击它运行的exe而不是它关闭。 您可以在文件末尾放置一个“raw_input()”(对于Python2)或“input()”(对于Python3)(在“log('为url')之后”但是使用“for url”的缩进在[__CATs __,__连字符___]:“)。

关于日志中的'ok',是你创建的log()函数吗?如果是这样,在写入文件之前,是否将'\ n'追加到日志的每一行?