我知道如何使用 cx_freeze 将 CPython 文件编译为 exe,但是是否可以使用 PyPy 编译一个简单的程序到 Exe ?
2 回答
据我所知,没有关于如何使用 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 频道上获得帮助。
这是一个可能适合您的 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)