将PyPy编译为Exe
这是一个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)
有关于如何做创建使用PyPy解释程序的EXE,就没有现成的方式或教程我知道。恐怕事情发展并不是微不足道的。
原则上,有两种方法可以考虑使用PyPy的翻译来获取EXE文件,可以使用PyPy解释器或编写自己的RPython程序(PyPy解释器本身是一个RPython程序,即使用受限子集蟒蛇)。
如果你的程序使用了RPython的一个受限制的子集并且没有依赖关系,你可以使用pypy/translator/goal中的翻译脚本来查看,你也会发现很多目标* .py文件。拿一个和修改它为你的目的。您可能首先想从这里开始翻译蟒蛇功能发挥:
http://doc.pypy.org/en/latest/getting-started-dev.html#trying-out-the-translator
如果你的程序是一个应用程序,并依赖于外部包,你应该首先尝试以确保你的程序上pypy在所有工作 - 并非所有外部库都受支持。然后,您可能会考虑修改targetpypystandalone脚本来加载应用程序模块。如果有疑问,请尝试在irp.freenode.net上的pypy-dev邮件列表或#pypy频道上获得帮助。
RPython的一个缺点是它没有记录,如果你的代码没有遵循它,那么翻译器将会失败并带有完全不可理解的错误信息。 (例如,试图使用命名元组给出错误FrozenDesc对象没有属性allenforced_attrs。) – Antimony
http://*.com/questions/4251964/can-pypy-be-used-to-produce-a-small-standalone-executable –
可能的重复它不是一个重复的becouse链接你提供的解决方案没有和已经过时了2010年,现在我们已经有了2012年。可能自那时起有所改变。 – Nuncjo
@RolandSmith该问题具体询问* py2exe等不同于* py2exe等的东西,因为它不包含Python解释器,并接受了“停止编写Python并开始使用这种完全不同的语言,这恰好是Python的一个子集”作为答案。这个问题只是要求一个类似于PyPy和完整Python的冻结工具。 – delnan