python – 编译.pyw文件,以便它可以像.pyc一样运行而无需控制台

我试图在没有控制台的情况下将pyw文件编译成pyc.当我尝试使用它直接编译时,结果是一个pywc文件,但似乎 pythonw.exe没有注册该扩展名为python.exe为pyc执行的文件之一.

结果当然是当你尝试执行时没有双击处理程序,或者如果你将扩展名改为pyc,你就得到了控制台.

有没有人知道解决这个问题的方法?没有控制台的.pyc的影响?

谢谢!

更新:
由于通过execfile运行或双击windows中的图标所以不生成文件的编译版本,我在命令行启动python,然后:

import py_compile
py_compile.compile("[FileName].pyw")

这是我获得.pywc扩展名的地方.
我的Python版本是2.5.4

解决方法

(在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).如果您只想在那个问题上找到旧答案,请不要犹豫,发布一个新问题,这些事情可以快速改变.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...