34

我知道如何使用 cx_freeze 将 CPython 文件编译为 exe,但是是否可以使用 PyPy 编译一个简单的程序到 Exe ?

4

2 回答 2

7

据我所知,没有关于如何使用 PyPy 解释器从程序创建 EXE 的现成方法或教程。恐怕让事情顺利进行并非易事。

原则上,有两种方法可以考虑使用 PyPy 的翻译来获取 EXE 文件,使用 PyPy 解释器或编写自己的 RPython 程序(PyPy 解释器本身就是一个 RPython 程序,即使用 Python 的受限子集)。

如果您的程序使用 RPython 的受限子集并且没有依赖项,您可以考虑在pypy/translator/goal中使用翻译脚本,您还会在其中找到很多 target*.py 文件。取一个并根据您的目的对其进行修改。您可能首先想从这里开始翻译 python 函数:

http://doc.pypy.org/en/latest/getting-started-dev.html#trying-out-the-translator

如果您的程序是一个应用程序并且依赖于外部包,您应该首先尝试确保您的程序完全可以在 pypy 上运行 - 并非所有外部库都受支持。然后,您可能会考虑修改 targetpypystandalone 脚本以加载您的应用程序模块。如果有疑问,请尝试在 pypy-dev 邮件列表或 irc.freenode.net 上的#pypy 频道上获得帮助。

于 2012-06-10T08:13:54.057 回答
-2

这是一个可能适合您的 py2exe 解决方案:compile.py

#!/usr/bin/env python
# Corey Goldberg

from distutils.core import setup
import py2exe
import sys

if len(sys.argv) == 2:
    entry_point = sys.argv[1]
    sys.argv.pop()
    sys.argv.append('py2exe')
    sys.argv.append('-q')
else:
    print 'usage: compile.py <python_script>\n'
    raw_input('press ENTER to exit...')
    sys.exit(1)

opts = {
    'py2exe': {
        'compressed': 1,
        'optimize': 2,
        'bundle_files': 1
    }
}

setup(console=[entry_point], options=opts, zipfile=None)
于 2012-05-25T03:06:00.770 回答