python – 编译.pyw文件,以便它可以像.pyc一样运行而无需控制台
我试图在没有控制台的情况下将pyw文件编译成pyc.当我尝试使用它直接编译时,结果是一个pywc文件,但似乎
pythonw.exe没有注册该扩展名为python.exe为pyc执行的文件之一.
结果当然是当你尝试执行时没有双击处理程序,或者如果你将扩展名改为pyc,你就得到了控制台. 有没有人知道解决这个问题的方法?没有控制台的.pyc的影响? 谢谢! 更新: import py_compile py_compile.compile("[FileName].pyw") 这是我获得.pywc扩展名的地方. 解决方法
(在OP的帖子中进行了一些讨论)
如果你需要的是以* .pyc或* .pyo的形式向客户端或用户提供已编译的应用程序,并避免在执行时打开控制台,一个好的选择是留下一个调用主应用程序的* .pyw包装器. 让我们假设主应用程序在main.pyc中,并且入口点为main,让我们调用包装器top.pyw,它通常看起来像: # top.pyw file import main if __name__ == "__main__": import sys main.main(*sys.argv[1:]) 你的main.py文件看起来像这样: # main.py file """ Main module documentation (optional) """ # import modules # function and class definitions def main(*argv): # Parses the options (optional) import optparse parser = optparse.OptionParser(usage="%prog [<options>]n" + __doc__) parser.add_option(...) parser.add_option(...) opt,args = parser.parse_args(list(argv)) # Calls the appropriate function: my_function(...) 另请注意,* .pyc往往是特定于版本的.您可以检查上述解决方案是否与pyInstaller and similar “independent” distribution methods兼容. 编辑=>实际上,如果使用pyInstaller,您可以简单地包含所有脚本并生成一个独立于Python安装的可执行文件,并且在没有控制台的情况下启动(创建规范时使用-w选项).您甚至不需要使用包装器或更改扩展.虽然它将是一个更大的文件,这可能是你正在寻找的. 最后,以防万一你要去的地方:如果你不想让别人从编译的字节码中提取源代码,不要忘记你需要额外的预防措施.这称为代码混淆,SO上还有其他线程(for example this one).如果您只想在那个问题上找到旧答案,请不要犹豫,发布一个新问题,这些事情可以快速改变. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |