Rumah >pembangunan bahagian belakang >Tutorial Python >Artifak pembungkusan Python—Nuitka!
Kali ini juga disebabkan oleh Projek ini perlu menukar kod Python ke dalam program exe Selepas mencari untuk masa yang lama, saya menemui dua alat yang boleh membungkus projek Python - pyintaller dan nuitka.
Kedua-dua alatan ini boleh memenuhi keperluan projek pada masa yang sama:
Perasaan terbesar selepas menggunakan kedua-dua alatan ini ialah:
Untuk projek yang sama, exe yang dihasilkan hanya 7M!
Pembungkusan sangat pantas (dalam masa 1 minit) dan permulaan adalah sangat pantas.
<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;"><span style="font-size: 15px;">pip install Nuitka</span>
pip install Nuitka
Untuk projek yang mempunyai banyak kebergantungan pihak ketiga (seperti obor import, aliran tensor, cv2, numpy, panda, geopy, dsb. ) ), cara terbaik untuk membungkus di sini ialah hanya menukar kod anda sendiri kepada C++, tanpa mengira pakej pihak ketiga yang besar ini!
Berikut ialah struktur direktori demo saya (antara muka yang ditulis dalam rangka kerja pytq5 digunakan di sini):
├─utils//源码1文件夹├─src//源码2文件夹├─logo.ico//demo的图标└─demo.py//main文件
Gunakan arahan berikut (debugging) untuk menjana fail exe terus:
nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py
Berikut ialah pengenalan ringkas kepada arahan nuitka saya di atas:
<span style="font-size: 15px;">--standalone</span>
:方便移植到其他机器,不用再安装python
<span style="font-size: 15px;">--show-memory --show-progress</span>
:展示整个安装的进度过程
<span style="font-size: 15px;">--nofollow-imports</span>
:不编译代码中所有的import,比如keras,numpy之类的。
<span style="font-size: 15px;">--plugin-enable=qt-plugins</span>
:我这里用到pyqt5来做界面的,这里nuitka有其对应的插件。
<span style="font-size: 15px;">--follow-import-to=utils,src</span>
:需要编译成C++代码的指定的2个包含源码的文件夹,这里用<span style="font-size: 15px;">,</span>
来进行分隔。
<span style="font-size: 15px;">--output-dir=out</span>
:指定输出的结果路径为out。
<span style="font-size: 15px;">--windows-icon-from-ico=./logo.ico</span>
:指定生成的exe的图标为logo.ico这个图标,这里推荐一个将图片转成ico格式文件的网站(比特虫)。
<span style="font-size: 15px;">--windows-disable-console</span>
:运行exe取消弹框。这里没有放上去是因为我们还需要调试,可能哪里还有问题之类的。
经过1min的编译之后,你就能在你的目录下看到:
├─utils//源码1文件夹├─src//源码2文件夹├─out//生成的exe文件夹├─demo.build └─demo.dist └─demo.exe//生成的exe文件├─logo.ico//demo的图标└─demo.py//main文件
当然这里你会发现真正运行exe的时候,会报错:<span style="font-size: 15px;">no module named torch,cv2,tensorflow</span>
等等这些没有转成C++的第三方包。
这里需要找到这些包(我的是在softwarepython3.7Libsite-packages下)复制(比如numpy,cv2这个文件夹)到<span style="font-size: 15px;">demo.dist</span>
路径下。
至此,exe能完美运行啦!
Atas ialah kandungan terperinci Artifak pembungkusan Python—Nuitka!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!