ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Python-ΡΠΊΡΠΈΠΏΡ, Π½ΠΎ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°? ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» EXE ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ Π·Π°Π΄Π°ΡΡ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΠΊΠ»ΠΈΠΊΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΅ΡΡΡ: ΠΎΡ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄ΠΎ Π±ΠΎΡΡΠ±Ρ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β ΡΠ΅ΡΠ΅Π· PyInstaller, Nuitka ΠΈ cx_Freeze, ΡΡΠ°Π²Π½ΠΈΠΌ ΠΈΡ
ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Π Π΅ΡΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΠΎΠ΄Π΅ ModuleNotFoundError ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π§ΠΠ£-ΡΡΠ°Π½ΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Python) β ΡΡΠΎΡ Π³Π°ΠΉΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΈΡ
Π² ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ ΠΌΠ°ΡΡΠ΅ΡΡΠΊΠΎΠΉ.
1. ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Python Π² EXE: ΠΏΠ»ΡΡΡ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΡ: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Python ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠΎ Π΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π°:
- πΉ ΠΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°: Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ΅Ρ "ΡΠ°Π·Π΄ΡΡΡΡΡ" Π΄ΠΎ 10β50 ΠΠ ΠΈΠ·-Π·Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
- πΉ ΠΠ°ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
PyInstaller). - πΉ ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ°ΠΌΠΈ: Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Nuitka) ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ Π·Π°ΡΠΈΡΠ½ΠΈΠΊΠΎΠ².
- πΉ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ GUI: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠΎΠ΄Π΅
tkinterΠΈΠ»ΠΈPyQtΡΡΠ΅Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π°, Π΅ΡΠ»ΠΈ:
- π ΠΡ ΡΠ°ΡΠΏΠΎΡΡΡΠ°Π½ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ΅Π΄ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π±Π΅Π· ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΡΠ°ΡΡΡΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ²).
- π ΠΡΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ (Ρ ΠΎΡΡ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°!).
- π Π‘ΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°Ρ ).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ EXE-ΡΠ°ΠΉΠ»Ρ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ 100% ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Windows. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΡΠΈΠΏΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Python 3.11 ΠΏΠΎΠ΄ Windows 11, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ Π½Π° Windows 7 Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
2. Π‘ΠΏΠΎΡΠΎΠ± 1: PyInstaller β ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ
PyInstaller β ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Python Π² EXE. ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π²ΠΊΠ»ΡΡΠ°Ρ numpy, pandas, opencv) ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π²Π° ΡΠ΅ΠΆΠΈΠΌΠ°:
- π¦ ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ EXE (
--onefile) β Π²ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» (ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ). - π ΠΠ°ΠΏΠΊΠ° Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ (
--onedir) β ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ EXE ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ (Π±ΡΡΡΡΠ΅Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ PyInstaller ΡΠ΅ΡΠ΅Π· pip:
pip install pyinstaller
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ script.py Π½Π° ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°):
pyinstaller --onefile --windowed script.py
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€Π»Π°Π³ --windowed ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ² Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΡΠΎΡ ΡΠ»Π°Π³ Π½Π΅ Π½ΡΠΆΠ΅Π½!
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²Π΅ΡΡΠΈΡ Python (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 3.8β3.11)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ΡΠ΅Π· pip
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ)
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ
-->
3. Π‘ΠΏΠΎΡΠΎΠ± 2: Nuitka β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ
Nuitka ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ PyInstaller ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Python-ΠΊΠΎΠ΄ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ (ΡΠ΅ΡΠ΅Π· C/C++), Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ:
- β‘ ΠΡΡΡΡΠ΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Π΄ΠΎ 2β5 ΡΠ°Π· ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ
PyInstaller). - ποΈ ΠΠ΅Π½ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ EXE (Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ).
- π Π‘Π»ΠΎΠΆΠ½Π΅Π΅ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ (Ρ ΠΎΡΡ ΠΈ Π½Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ:
pip install nuitka
nuitka --onefile --windows-disable-console script.py
ΠΠΈΠ½ΡΡΡ Nuitka:
- π’ ΠΠ΅Π΄Π»Π΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠ°ΡΠ°ΠΌΠΈ).
- π« ΠΠ΅ Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ "ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ" (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
tensorflowΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ). - π‘οΈ ΠΠ½ΡΠΈΠ²ΠΈΡΡΡΡ ΡΠ°ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (ΡΠ΅ΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ).
ΠΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Nuitka?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π°Π³ --lto=yes Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ EXE).
ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π· --include-module=... ΠΈ --exclude-module=....
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π½Π° SSD β ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π½Π° 20β30%.
4. Π‘ΠΏΠΎΡΠΎΠ± 3: cx_Freeze β Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ GUI
cx_Freeze ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½, Π½ΠΎ Π»ΡΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PyQt5, kivy) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Ρ PyInstaller.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° setup.py Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
from cx_Freeze import setup, Executable
base = None
if sys.platform == "win32":
base = "Win32GUI" # ΠΠ»Ρ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
setup(
name="MyApp",
version="1.0",
description="My Python App",
executables=[Executable("script.py", base=base)]
)
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
python setup.py build
| ΠΡΠΈΡΠ΅ΡΠΈΠΉ | PyInstaller | Nuitka | cx_Freeze |
|---|---|---|---|
| Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ | ΠΡΡΡΡΠ°Ρ | ΠΠ΅Π΄Π»Π΅Π½Π½Π°Ρ | Π‘ΡΠ΅Π΄Π½ΡΡ |
| Π Π°Π·ΠΌΠ΅Ρ EXE | ΠΠΎΠ»ΡΡΠΎΠΉ (10β50 ΠΠ) | Π‘ΡΠ΅Π΄Π½ΠΈΠΉ (5β20 ΠΠ) | ΠΠΎΠ»ΡΡΠΎΠΉ (15β60 ΠΠ) |
| ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GUI | Π₯ΠΎΡΠΎΡΠ°Ρ | Π‘ΡΠ΅Π΄Π½ΡΡ | ΠΡΠ»ΠΈΡΠ½Π°Ρ |
| Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ | ΠΠΈΠ·ΠΊΠ°Ρ | ΠΡΡΠΎΠΊΠ°Ρ | Π‘ΡΠ΅Π΄Π½ΡΡ |
| ΠΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ° | Π Π΅Π΄ΠΊΠΎ | Π§Π°ΡΡΠΎ | Π Π΅Π΄ΠΊΠΎ |
Nuitka ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π³Π΄Π΅ ΠΊΡΠΈΡΠΈΡΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π° cx_Freeze β Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. PyInstaller ΠΎΡΡΠ°ΡΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ.
5. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ
ΠΠ°ΠΆΠ΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
ΠΡΠΈΠ±ΠΊΠ° 1: ModuleNotFoundError
ΠΡΠΈΡΠΈΠ½Π°: PyInstaller ΠΈΠ»ΠΈ Nuitka Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- π ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ (
pip list). - π Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π½ΠΎ:
pyinstaller --hidden-import=module_name script.py. - π ΠΠ»Ρ Nuitka Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π°Π³:
--include-module=module_name.
ΠΡΠΈΠ±ΠΊΠ° 2: ΠΠΊΠ½ΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠΈΡΠΈΠ½Π°: Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΡΠ»Π°Π³ --windowed (Π΄Π»Ρ PyInstaller) ΠΈΠ»ΠΈ base="Win32GUI" (Π΄Π»Ρ cx_Freeze).
ΠΡΠΈΠ±ΠΊΠ° 3: EXE Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΠ
ΠΡΠΈΡΠΈΠ½Ρ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- π₯οΈ ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ Microsoft Visual C++ Redistributable (ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°).
- ποΈ ΠΠ΅ Ρ
Π²Π°ΡΠ°Π΅Ρ DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
--add-binaryΠ²PyInstaller). - π Π Π°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Python (ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π½Π° ΡΠΎΠΉ ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΡΡΠΎ ΠΈ ΡΠ΅Π»Π΅Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°).
ΠΡΠ»ΠΈ EXE Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π»ΠΎΠ³ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ _internal (Π΄Π»Ρ PyInstaller) ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π°Π³ --debug Π² Nuitka.
6. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ EXE
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ°ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. ΠΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ:
- π§Ή Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
--exclude-moduleΠ²PyInstallerΠΈΠ»ΠΈ Nuitka. - π§ UPX-ΡΠΆΠ°ΡΠΈΠ΅: Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π°Π³
--upx-dir=ΠΏΡΡΡ_ΠΊ_upx(ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ UPX Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°). - π¦ Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ»Ρ: Π²ΠΌΠ΅ΡΡΠΎ
--onefileΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅--onedirΠΈ Π°ΡΡ ΠΈΠ²ΠΈΡΡΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ UPX:
pyinstaller --onefile --upx-dir=C:\upx script.py
ΠΠ»Ρ Nuitka ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° ΡΡΡΡ ΡΠ»Π°Π³ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ:
nuitka --lto=yes --enable-plugin=tk-inter --standalone script.py
7. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ: Docker ΠΈ Π²Π΅Π±-ΠΎΠ±ΡΡΡΠΊΠΈ
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² EXE Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:
- π³ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ: ΡΠΏΠ°ΠΊΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π² ΠΎΠ±ΡΠ°Π· Ρ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Python. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Docker Desktop.
- π ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π² Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
Flask/FastAPI+ Docker. - π± ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
KivyΠΈΠ»ΠΈBeeWareΠ΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΠ΄ Android/iOS.
ΠΡΠΈΠΌΠ΅Ρ Dockerfile Π΄Π»Ρ Python-ΡΠΊΡΠΈΠΏΡΠ°:
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "script.py"]
Docker ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π΄, Π³Π΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ EXE ΠΎΡΡΠ°ΡΡΡΡ ΡΠ°ΠΌΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ.
FAQ: Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Python
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Python Π² EXE ΠΏΠΎΠ΄ Linux ΠΈΠ»ΠΈ macOS?
ΠΠ°, Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ ΡΠΎΠΉ ΠΠ‘, Π³Π΄Π΅ Π²Ρ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ. ΠΠ»Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
- π§ Linux β Windows:
wine+PyInstaller(Π½ΠΎ ΡΡΠΎ Π½Π΅Π½Π°Π΄ΡΠΆΠ½ΠΎ). - π macOS β Windows: Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Ρ Windows.
ΠΡΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΠ‘ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Docker Π΄Π»Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊ ΡΠΊΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· EXE?
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² EXE Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ:
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
CythonΠ΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Python Π² C-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. - π ΠΠ±Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π² DLL (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π·
ctypes). - π ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΡ Π½Π° Π±ΡΠΊΠ΅Π½Π΄ (Π²Π΅Π±-API) ΠΈ ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠΎΠΌΠ½ΠΈΡΠ΅: 100% Π·Π°ΡΠΈΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° β ΠΎΠΏΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ EXE.
ΠΠΎΡΠ΅ΠΌΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΌΠΎΠΉ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ EXE?
ΠΡΠΈΡΠΈΠ½Ρ:
- π‘οΈ
PyInstaller/Nuitka ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΌ Π²ΠΈΡΡΡΡ. - π ΠΠ°Ρ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ "ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅" Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π΅ΡΡΡΠΎΠΌ).
Π Π΅ΡΠ΅Π½ΠΈΡ:
- β ΠΠΎΠ±Π°Π²ΡΡΠ΅ EXE Π² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ°.
- β ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ (ΡΠ΅ΡΠ΅Π· SignTool ΠΎΡ Microsoft).
- β
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
cx_Freezeβ ΠΎΠ½ ΡΠ΅ΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ (SQLite, PostgreSQL)?
ΠΠ»Ρ SQLite ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ β Π±Π°Π·Π° Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² EXE Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ»Ρ PostgreSQL/MySQL:
- ποΈ Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΡΡΡ ΠΊ Π±Π°Π·Π΅ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³-ΡΠ°ΠΉΠ».
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
--add-data="ΠΏΡΡΡ_ΠΊ_Π±Π°Π·Π΅;Π±Π°Π·Π°"Π²PyInstaller. - π ΠΠ»Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Π±Π°Π· Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΡΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ URL (Π½Π΅ Π»ΠΎΠ³ΠΈΠ½Ρ/ΠΏΠ°ΡΠΎΠ»ΠΈ!).
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ PyInstaller:
pyinstaller --onefile --add-data "db.sqlite;." script.py
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ EXE Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ?
ΠΠ΅Ρ. ΠΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:
- π Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ (ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ EXE Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°).
- π¦ Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ EXE (Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ) ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ (ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ).
- π ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ (Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅).