gpt4 book ai didi

python - 编译一个 .pyw 文件,这样它就可以在没有控制台的情况下像 .pyc 一样运行

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:48 27 4
gpt4 key购买 nike

我试图在没有控制台的情况下将 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 的形式向客户或用户提供已编译的应用程序,并避免在执行时打开控制台,一个不错的选择是留下一个调用主要应用。

假设主应用程序在 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)。如果您只对那个问题提出旧答案,请不要犹豫,发布一个新问题,这些事情可能会很快改变。

关于python - 编译一个 .pyw 文件,这样它就可以在没有控制台的情况下像 .pyc 一样运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com