将PyPy编译为Exe

Nun*_*cjo 32 python pypy compilation exec

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

hpk*_*k42 7

据我所知,目前还没有关于如何使用PyPy解释器从程序创建EXE的现成方法或教程.我担心,让事情发展并不是一件轻而易举的事.

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

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

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

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


sec*_*ind -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)
Run Code Online (Sandbox Code Playgroud)

  • -1 py2exe *不能*与 PyPy 一起工作(至少目前不能) - 请先做一些研究。为什么你链接到一些不起眼的项目的安装脚本而不是 py2exe 项目? (6认同)
  • @delnan:这里鼓励实用的答案。人们当然可以将“py2exe”粘贴到他们的搜索栏中。 (3认同)