Is it possible to compile Python natively (beyond pyc byte code)?

后端 未结 4 1700
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-02 16:39

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

相关标签:
4条回答
  • 2021-02-02 16:58

    I think you can use jython to compile python to Java bytecode, and then compile that with GCJ.

    0 讨论(0)
  • 2021-02-02 17:03

    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.

    0 讨论(0)
  • 2021-02-02 17:11

    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?

    0 讨论(0)
  • 2021-02-02 17:18
    • 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.
    0 讨论(0)
提交回复
热议问题