问题
I wonder if it is possible to create an executable module from a Python script. I need to have the most performance and the flexibility of Python script, without needing to run in the Python environment. I would use this code to load on demand user modules to customize my application.
回答1:
- There's pyrex that compiles python like source to python extension modules
- rpython which allows you to compile python with some restrictions to various backends like C, LLVM, .Net etc.
- There's also shed-skin which translates python to C++, but I can't say if it's any good.
- PyPy implements a JIT compiler which attempts to optimize runtime by translating pieces of what's running at runtime to machine code, if you write for the PyPy interpreter that might be a feasible path.
- The same author that is working on JIT in PyPy wrote psyco previously which optimizes python in the CPython interpreter.
回答2:
You can use something like py2exe to compile your python script into an exe, or Freeze for a linux binary.
see: How can I create a directly-executable cross-platform GUI app using Python?
回答3:
I've had a lot of success using Cython, which is based on and extends pyrex:
Cython is a language that makes writing C extensions for the Python language as easy as Python itself. Cython is based on the well-known Pyrex, but supports more cutting edge functionality and optimizations.
The Cython language is very close to the Python language, but Cython additionally supports calling C functions and declaring C types on variables and class attributes. This allows the compiler to generate very efficient C code from Cython code.
This makes Cython the ideal language for wrapping for external C libraries, and for fast C modules that speed up the execution of Python code.
回答4:
I think you can use jython to compile python to Java bytecode, and then compile that with GCJ.
来源:https://stackoverflow.com/questions/205062/is-it-possible-to-compile-python-natively-beyond-pyc-byte-code