我举个例子:
$ curl -LO http://nuitka.net/releases/Nuitka-0.5.18.1.tar.gz
$ tar xf Nuitka-0.5.18.1.tar.gz
$ echo 'print "Hello, Nuitka!"' > Hello.py
$ ./Nuitka-0.5.18.1/bin/nuitka Hello.py
$ chmod +x hello.exe
$ ./Hello.exe
Hello, Nuitka!
1
Kilerd 2016-01-29 20:33:43 +08:00
跟 py2exe 有什么区别?
|
2
zxgngl OP It translates the Python into a C level program that then uses "libpython" to execute in the same way as CPython does.
|
4
zxgngl OP $ du -h ./Hello.exe
92K |
6
zxgngl OP |
7
icedx 2016-01-29 22:20:50 +08:00
|
8
nightv2 2016-01-30 08:38:55 +08:00 via Android
pyinstall 打包为一个文件不是更好一些么
|
9
Karblue 2016-01-30 10:16:34 +08:00 via Android
libpython 加上其他打包的 python 运行库。体积还不如 py2exe
|
10
bear330 2016-01-31 22:10:12 +08:00
它的重點應該不是打包吧, 而是它會把你的 python code 轉成直接用 python 的 c API 形式的 c++程式碼, 然後給 c++編譯器去編譯, 好處是可以在幾乎 100%的相容性上得到 static compiler 的優化能力, 例如你的 python 函數寫:
def f(i): return i + 1 + 20 f(100) 在轉成對應的 c++ code 編譯後, 就可以直接把 1 + 20 換成 21, 甚至把 f(100)這行整個直接 inline 了, 進而優化整個程式的效能, 卻保持程式相容性 (不像 pypy 要舍棄一些相容性, 如果用到 c extension 的話) |