πŸ•·οΈ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 75 (from laksa021)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

πŸ“„
INDEXABLE
βœ…
CRAWLED
2 days ago
πŸ€–
ROBOTS SERVER UNREACHABLE
Failed to connect to robots server: Operation timed out after 2002 milliseconds with 0 bytes received

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.1 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/
Last Crawled2026-04-17 15:30:19 (2 days ago)
First Indexed2024-11-21 11:30:25 (1 year ago)
HTTP Status Code200
Meta TitlePython-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² EXE-Ρ„Π°ΠΉΠ» ΠΈ обфускация ΠΊΠΎΠ΄Π°
Meta Description<p>Π’ этом постС познакомимся с инструмСнтами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² exe-Ρ„Π°ΠΉΠ», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°.</p>
Meta Canonicalnull
Boilerpipe Text
Работая Π½Π° фрилансС, ΠΏΠΎΠΌΠΈΠΌΠΎ выполнСния своСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ сохранности своСго Ρ‚Ρ€ΡƒΠ΄Π°. Π§Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ? Π’Π°ΠΌ скорСС всСго извСстны риски фриланса, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ отправляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, Π° Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ оплачивая Π΅Ρ‘. НС Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² спСцифику фриланса, Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ бСзопасных способах ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ "Π΄Π΅ΠΌΠΎ вСрсии". БущСствуСт нСсколько способов бСзопасно ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, минимизируя риски Π½Π΅ΠΎΠΏΠ»Π°Ρ‚Ρ‹: ДСмонстрация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ. Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ - Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° своём ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ сСрвСрС, прСдоставив доступ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Telegram-Π±ΠΎΡ‚Π° ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвис). Π‘Π±ΠΎΡ€ΠΊΠ° исполняСмого Ρ„Π°ΠΉΠ»Π° (exe) Π’Π°ΠΊΠΎΠΉ способ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Ρƒ сСбя, прописав ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ) ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Ρ‡Π° прСдставляСт собой GUI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π±ΠΎΡ€ΠΊΠ° exe-Ρ„Π°ΠΉΠ»Π° с обфускациСй ΠΊΠΎΠ΄Π° Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹: обфускация услоТняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· исходного ΠΊΠΎΠ΄Π°. Π₯отя ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСуязвимым для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π΅Π΅ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ( reverse engeneering ). Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ понятСн ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ объяснСния. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» «Код Π½Π° салфСткС» . Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сборка исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)? Π‘Π±ΠΎΡ€ΠΊΠ° Π² исполняСмый ( exe ) Ρ„Π°ΠΉΠ» прСдставляСт собой ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ„Π°ΠΉΠ»/Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для запуска Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ прСдустановлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. МнС извСстны Π΄Π²Π° способа сборки: Π—Π°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° срСдствами PyInstaller β€” это инструмСнт для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Он собираСт Python-скрипт вмСстС с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, модулями ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ, ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для распространСния. Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания exe -Ρ„Π°ΠΉΠ»Π°: pyinstaller --onefile script.py ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ срСдствами Nuitka β€” это компилятор для языка Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Python Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² зависимости ΠΎΡ‚ настроСк), Ρ‡Ρ‚ΠΎ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… нСзависимыми ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. Nuitka Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π±Π΅Π· нСобходимости наличия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для компиляции с использованиСм Nuitka: nuitka --standalone script.py ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· способов ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ своими плюсами ΠΈ минусами, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°? ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° β€” это процСсс измСнСния исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΡ€ΠΈ сохранСнии работоспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ обфускация примСняСтся для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΎΡ‚ нСсанкционированного доступа ΠΈ копирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ для услоТнСния процСсса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ( reverse engeneering ). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ обфускация Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³Π°. Однако, для ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ людьми. Π’ контСкстС фриланса, это отличная Π·Π°Ρ‰ΠΈΡ‚Π°. Помимо Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ способа, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это вСсьма Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ занятиС, сущСствуСт нСсколько инструмСнтов, Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…: PyArmor β€” это инструмСнт для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Python скриптов ΠΎΡ‚ копирования. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ динамичСской Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π²ΠΎ врСмя выполнСния. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для обфускации с использованиСм PyArmor: pyarmor pack script.py Nuitka β€” нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Nuitka это компилятор Python, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обфускации ΠΊΠΎΠ΄Π°. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ затрудняСт Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° . Β  Python Minifier β€” это инструмСнт для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ обфускации Python ΠΊΠΎΠ΄Π°. Он удаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ· исходного ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² случайныС названия. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм Python Minifier: pyminify example.py --output example.min.py Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² постС? Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для примСнСния ΠΈ комбинирования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΌΡ‹ остановимся Π½Π° Π΄Π²ΡƒΡ…: Рассмотрим процСсс обфускации ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Python Minifier , Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠ°ΠΊΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ PyInstaller . Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Nuitka . Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ нСзависимы ΠΈ Π²Ρ‹Π±ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° Π²Π°ΠΌΠΈ. Для большСй наглядности ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ описанныС Π²Ρ‹ΡˆΠ΅ процСссы Π½Π° ΠΏΡ€Ρ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ MPF Tools Converter , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я написал ΠΏΡ€ΠΈΡΡ‚Π΅Π»ΡŽ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ (написал Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ сСйчас Π½Π΅ ΠΎΠ± этом). Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ: Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub . ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ! βš οΈΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!⚠️ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния сборки зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмы! Π’ΠΎ Π΅ΡΡ‚ΡŒ: запустив сборку Π½Π° Linux, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Linux, соотвСтствСнно, запустив сборку Π½Π° Windows, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Windows. Π Π°Π±ΠΎΡ‡Π΅Π³ΠΎ способа, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Linux Π²Π΅Ρ€ΡΠΈΡŽ для Windows, Π½Π΅ прибСгая ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС я Π½Π΅ Π½Π°ΡˆΡ‘Π». Если Π²Π°ΠΌ извСстСн способ, поТалуйста, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях! Python Minifier + PyInstaller Π‘ Python Minifier всё понятно ΠΏΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ: ΠΎΠ½ выполняСт ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ β€” процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ² сокращаСтся Π·Π° счёт удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, инструмСнт ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ измСняСт структуру ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ слоТным для чтСния, Π½ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Python Minifier Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: pip install python-minifier По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ "ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€" ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ, Ссли Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² запуска: https://dflook.github.io/python-minifier/command_usage.html Π’ ΠΌΠΎΡ‘ΠΌ случаС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· main.py-Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° app с Π΅Ρ‰Ρ‘ двумя .py-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ . Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ измСнСния. pyminify main.py app/ --in-place Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядСл main.py Π΄ΠΎ примСнСния: А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ послС: Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ наглядным ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Ρ‚.ΠΊ. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Flet ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ нСзависимом ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΊΠΎΠ΄Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π°Π·Π±ΠΎΡ€ всСго этого Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сил. МоТно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyInstaller ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ приступим, Π΄Π°Π²Π°ΠΉΡ‚Π΅ познакомимся с PyInstaller ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности PyInstaller: АвтоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Windows, macOS, Linux). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GUI. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PyInstaller? PyInstaller Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Python, опрСдСляСт зависимости (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн: ΠΎΠ΄Π½ΠΈΠΌ большим исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ (Ρ€Π΅ΠΆΠΈΠΌ onefile ). ΠΏΠ°ΠΏΠΊΠΎΠΉ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈ всСми зависимостями (Ρ€Π΅ΠΆΠΈΠΌ onedir ). PyInstaller ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python, добавляя Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Python-скрипт Π²Π½ΡƒΡ‚Ρ€ΠΈ скомпилированного окруТСния. Установка ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: pip install -U pyinstaller Π£ PyInstaller ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сборку исполняСмого Ρ„Π°ΠΉΠ»Π° "ΠΏΠΎΠ΄ сСбя". ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² доступСн Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: https://pyinstaller.org/en/stable/usage.html Π’ ΠΌΠΎΡ‘ΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: pyinstaller --noconfirm --onefile --noconsole \ --name 'MPF Converting Tool' --icon './favicon.ico' \ --add-data './app:app/' \ 'main.py' Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: --noconfirm - Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ запрос подтвСрТдСния ΠΏΡ€ΠΈ пСрСзаписи ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² сборки. PyInstaller Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопросов Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π½Π΅Π΅ созданныС Ρ„Π°ΠΉΠ»Ρ‹. --onefile - ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС зависимости ΠΈ саму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для распространСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ рядом. --noconsole - Π£Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ консольного ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПолСзно для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ консоль Π½Π΅ Π½ΡƒΠΆΠ½Π°. --name 'MPF Converting Tool' - Π—Π°Π΄Π°Ρ‘Ρ‚ имя для создаваСмого исполняСмого Ρ„Π°ΠΉΠ»Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ MPF Converting Tool.exe (Π½Π° Windows) ΠΈΠ»ΠΈ просто MPF Converting Tool (Π½Π° Linux/MacOS). --icon './favicon.ico' - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠΊΠΎΠ½ΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для созданного исполняСмого Ρ„Π°ΠΉΠ»Π°. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ favicon.ico . --add-data './app:app/' - ДобавляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² сборку. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠ°ΠΏΠΊΠ° ./app добавляСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступна Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ app/ . Π€ΠΎΡ€ΠΌΠ°Ρ‚ записи: source:destination . 'main.py' - Основной Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ PyInstaller Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² исполняСмый Ρ„Π°ΠΉΠ». Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ начнётся процСсс сборки. Если всё ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ запись "27927 INFO: Building EXE from EXE-00.toc completed successfully.". Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ PyInstaller появится Π΄Π²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: build ΠΈ dist . Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ build содСрТатся Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для сборки, Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ dist ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ dist Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅. Π’Π°ΠΌ находится исполняСмый Ρ„Π°ΠΉΠ». Запустим Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, просто ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΈΡ… рядом: И запустим снова: Π‘Π»Π΅Ρ‚Π΅Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° прилоТСния, Π½ΠΎ это, скорСС всСго связанно с запуском Π½Π° Linux. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Python Minifier + PyInstaller ΠŸΡ€ΠΎΡ†Π΅ΡΡ достаточно прост ΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ трудностСй.Β  Python Minifier Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ справляСтся со своСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ - ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ это Π½Π΅ панацСя ΠΈ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ инструмСнты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‚ ΠΆΠ΅ PyArmor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π½ΠΎ ΠΎΠ½ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТСн Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ Π·Π°Π΄Π°Ρ‡ для фриланса, это каТСтся излишним. Π§Ρ‚ΠΎ касаСтся PyInstaller, Ρ‚ΠΎ это Тивая классика. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°: ΠΏΠΎΡ‡Ρ‚ΠΈ 40 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚! И это всСго Ρ‚Ρ€ΠΈ .py-Ρ„Π°ΠΉΠ»Π° + нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Nuitka Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Nuitka ΠΈ Ρ‡Π΅ΠΌ этот процСсс отличаСтся ΠΎΡ‚ использования PyInstaller ΠΈ обфускации с Python Minifier . ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Nuitka: Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Python ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания нСзависимых исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Nuitka: Анализ исходного ΠΊΠΎΠ΄Π° Python для опрСдСлСния всСх зависимостСй ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π΅Π· нСобходимости наличия Python. Как Nuitka отличаСтся ΠΎΡ‚ PyInstaller? Π₯арактСристика PyInstaller Nuitka Π’ΠΈΠΏ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ Python-скрипт с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ модулями ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Python-ΠΊΠΎΠ΄ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· C Π Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° ΠžΠ±Ρ‹Ρ‡Π½ΠΎ большС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ МСньшС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ такая ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ исходного ΠΊΠΎΠ΄Π° Π’Ρ‹ΡˆΠ΅ Π·Π° счёт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ машинного ΠΊΠΎΠ΄Π° Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с модулями C API ЦСль Быстрая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° для распространСния Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ компиляция Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Nuitka ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ PyInstaller , Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исполняСмого Ρ„Π°ΠΉΠ»Π°. НуТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Minifier ΠΏΠ΅Ρ€Π΅Π΄ Nuitka? Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ сцСнария с PyInstaller , Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ минификация ΠΈΠ»ΠΈ обфускация ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм Nuitka ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ трСбуСтся. Π‘Π°ΠΌ процСсс компиляции ΡƒΠΆΠ΅ затрудняСт восстановлСниС Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Если ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ, Nuitka ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΈ бСсплатныС вСрсии: БСсплатная вСрсия Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» компиляции Python-ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ, обСспСчивая Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ простого чтСния исходного ΠΊΠΎΠ΄Π°. ΠŸΠ»Π°Ρ‚Π½Π°Ρ вСрсия (Commercial Edition) добавляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ встроСнная обфускация, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ оптимизация для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС коммСрчСской вСрсии, которая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обфускации прямо Π² процСсс компиляции. Установка Nuitka Для установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: pip install -U nuitka Для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Nuitka Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС C-компилятора. Для Windows: Visual Studio 2022 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅. НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с VisualStudio Code / VSCode! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Английский язык Π² Visual Studio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Nuitka ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π΅Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π»Π° Π²Ρ‹Π²ΠΎΠ΄ компилятора. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ MinGW64 . Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --mingw64 . Nuitka ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ссли Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Visual Studio. НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы, прСдоставляСмыС ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Visual Studio ΠΈ MinGW64. Для Lunux: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ GCC-компилятор ΠΈΠ»ΠΈ установлСнный clang . Для macOS: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмный Clang. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, установитС XCode ΠΈΠ· Apple Store . Запуск сборки Для запуска Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: nuitka --standalone --onefile --output-filename="MPF Converting Tool" \ --windows-disable-console --windows-icon-from-ico=./favicon.ico \ main.py Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: --standalone - Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с зависимостями, создавая Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». --onefile - Π£ΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всё Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». --output-filename="MPF Converting Tool" - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. (Для Windows Π² ΠΊΠΎΠ½Π΅Ρ† Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ .exe !) --windows-disable-console - ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ консольноС ΠΎΠΊΠ½ΠΎ для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. --windows-icon-from-ico=./favicon.ico - ДобавляСт ΠΈΠΊΠΎΠ½ΠΊΡƒ для исполняСмого Ρ„Π°ΠΉΠ»Π°. main.py - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‚ΠΎΡ€ΠΎΠΏΠ»ΠΈΠ²Ρ‹ΠΌ ΠΈ Π·Π°Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя. Π’ процСссС Π±ΡƒΠ΄Π΅Ρ‚ создано Ρ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: main.build , main.dist ΠΈ main.onefile-build , содСрТащиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° появится Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ исполняСмый Ρ„Π°ΠΉΠ»: Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ запустим, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² работоспособности: Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Nuitka ΠŸΡ€ΠΈ Π±Π΅Π³Π»ΠΎΠΌ знакомствС, Nuitka каТСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² сСбя ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ услоТнСниС "Ρ€Π°Π·Π±ΠΎΡ€Π°" Ρ„Π°ΠΉΠ»Π° Π½Π° исходный ΠΊΠΎΠ΄. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 31 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ мСньшС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° PyInstaller Π½Π° 10 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Π½ΠΎ Π½Π΅ каТСтся Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ успСхом. ВСроятно, зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π‘Ρ‹Π»ΠΎ интСрСсно Π² процСссС написания поста ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” PyInstaller ΠΈΠ»ΠΈ Nuitka? Если ваша основная Ρ†Π΅Π»ΡŒ β€” быстро ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, PyInstaller ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅: ΠΎΠ½ ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Nuitka . Всё описанноС Π²Ρ‹ΡˆΠ΅, Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π² ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ, Π° лишь описаниС способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ своСго Ρ‚Ρ€ΡƒΠ΄Π°. Бпособов Π½Π° самом Π΄Π΅Π»Π΅ ΠΊΡƒΠ΄Π° большС ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ слоТнСС ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, остаётся Π·Π° Π²Π°ΠΌΠΈ. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» «Код Π½Π° салфСткС» . Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².
Markdown
![](https://mc.yandex.ru/watch/94235360) [ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#content) [Код Π½Π° салфСткС](https://pressanybutton.ru/) ##### МСню - [ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/) - [Π“Π°ΠΉΠ΄Ρ‹](https://pressanybutton.ru/category/gajdy/) - [ΠŸΡƒΡ‚ΡŒ Π² IT](https://pressanybutton.ru/category/put-v-it/) - [Новости](https://pressanybutton.ru/category/novosti/) - [Код Π² мСшкС](https://pressanybutton.ru/category/kod-v-meshke/) - [Π’ΠΈΠ΄Π΅ΠΎ](https://pressanybutton.ru/category/video/) - [Obsidian для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ](https://pressanybutton.ru/category/obsidian-dlya-polzovatelya/) - [Open Source](https://pressanybutton.ru/category/nashi-open-source-proekty/) - [Π‘Π°Π·Π°-Π·Π½Π°Π½ΠΈΠΉ](https://pressanybutton.ru/category/baza-znanij/) - [Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Python ΠΈ Π‘/C++](https://pressanybutton.ru/category/sravnenie-python-i-s-cpp/) - [ЭкспСримСнты с ИИ](https://pressanybutton.ru/category/eksperimenty-s-ii/) Π’Π΅ΠΌΠ° [Π’Ρ…ΠΎΠ΄](https://pressanybutton.ru/user/login/) [РСгистрация](https://pressanybutton.ru/user/signup/) 1. [Главная](https://pressanybutton.ru/) 2. [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты](https://pressanybutton.ru/category/poleznye-instrumenty/) 3. Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² EXE-Ρ„Π°ΠΉΠ» ΠΈ обфускация ΠΊΠΎΠ΄Π° # Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² EXE-Ρ„Π°ΠΉΠ» ΠΈ обфускация ΠΊΠΎΠ΄Π° [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты](https://pressanybutton.ru/category/poleznye-instrumenty/) β€’ [Иван ΠΡˆΠΈΡ…ΠΌΠΈΠ½](https://pressanybutton.ru/user/proDream/) β€’ 21 ΠΠΎΡΠ±Ρ€ΡŒ 2024 β€’ 6046 [Π“Π°ΠΉΠ΄Ρ‹](https://pressanybutton.ru/tag/%D0%B3%D0%B0%D0%B9%D0%B4%D1%8B/) [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты](https://pressanybutton.ru/tag/%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D1%8B%D0%B5-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/) [Π·Π°Ρ‰ΠΈΡ‚Π°](https://pressanybutton.ru/tag/%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0/) [pyinstaller](https://pressanybutton.ru/tag/pyinstaller/) [python minifier](https://pressanybutton.ru/tag/python-minifier/) [обфускация](https://pressanybutton.ru/tag/%D0%BE%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%86%D0%B8%D1%8F/) [компиляция](https://pressanybutton.ru/tag/%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F/) [nuitka](https://pressanybutton.ru/tag/nuitka/) [pyarmor](https://pressanybutton.ru/tag/pyarmor/) [exe](https://pressanybutton.ru/tag/exe/) Π’ этом постС познакомимся с инструмСнтами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² exe-Ρ„Π°ΠΉΠ», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°. ![Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² EXE-Ρ„Π°ΠΉΠ» ΠΈ обфускация ΠΊΠΎΠ΄Π°](https://pressanybutton.ru/media/post/2024/11/21/%D0%BE%D0%B1%D0%BB%D0%BE%D0%B6%D0%BA%D0%B0_6.png) [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты](https://pressanybutton.ru/category/poleznye-instrumenty/) β€’ [Иван ΠΡˆΠΈΡ…ΠΌΠΈΠ½](https://pressanybutton.ru/user/proDream/) β€’ 21 ΠΠΎΡΠ±Ρ€ΡŒ 2024 β€’ 6046 [← ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ](https://pressanybutton.ru/post/poleznye-instrumenty/obsidian-livesync-sovmestnaya-rabota-nad-proektnoj/) [Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ β†’](https://pressanybutton.ru/post/poleznye-instrumenty/besplatnyj-analog-chatgpt-na-svoyom-pk/) Работая Π½Π° фрилансС, ΠΏΠΎΠΌΠΈΠΌΠΎ выполнСния своСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ сохранности своСго Ρ‚Ρ€ΡƒΠ΄Π°. Π§Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ? Π’Π°ΠΌ скорСС всСго извСстны риски фриланса, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ отправляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, Π° Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ оплачивая Π΅Ρ‘. НС Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² спСцифику фриланса, Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ бСзопасных способах ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ "Π΄Π΅ΠΌΠΎ вСрсии". БущСствуСт нСсколько способов бСзопасно ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, минимизируя риски Π½Π΅ΠΎΠΏΠ»Π°Ρ‚Ρ‹: 1. **ДСмонстрация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ.** Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ - Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° своём ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ сСрвСрС, прСдоставив доступ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Telegram-Π±ΠΎΡ‚Π° ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвис). 2. **Π‘Π±ΠΎΡ€ΠΊΠ° исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)** Π’Π°ΠΊΠΎΠΉ способ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Ρƒ сСбя, прописав ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ) ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Ρ‡Π° прСдставляСт собой GUI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. 3. **Π‘Π±ΠΎΡ€ΠΊΠ° exe-Ρ„Π°ΠΉΠ»Π° с обфускациСй ΠΊΠΎΠ΄Π°** Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹: обфускация услоТняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· исходного ΠΊΠΎΠ΄Π°. Π₯отя ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСуязвимым для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π΅Π΅ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (`reverse engeneering`). Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ понятСн ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ объяснСния. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» [«Код Π½Π° салфСткС»](https://t.me/+gCWO9K8Dd642NTYy). Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ## Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сборка исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)? Π‘Π±ΠΎΡ€ΠΊΠ° Π² исполняСмый (`exe`) Ρ„Π°ΠΉΠ» прСдставляСт собой ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ„Π°ΠΉΠ»/Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для запуска Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ прСдустановлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. МнС извСстны Π΄Π²Π° способа сборки: 1. **Π—Π°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° срСдствами PyInstaller** β€” это инструмСнт для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Он собираСт Python-скрипт вмСстС с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, модулями ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ, ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для распространСния. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://pyinstaller.org/en/stable/). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания `exe`\-Ρ„Π°ΠΉΠ»Π°: ``` pyinstaller --onefile script.py ``` 1. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ срСдствами Nuitka** β€” это компилятор для языка Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Python Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² зависимости ΠΎΡ‚ настроСк), Ρ‡Ρ‚ΠΎ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… нСзависимыми ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. Nuitka Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π±Π΅Π· нСобходимости наличия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://nuitka.net/). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для компиляции с использованиСм Nuitka: ``` nuitka --standalone script.py ``` ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· способов ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ своими плюсами ΠΈ минусами, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. ## Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°? **ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°** β€” это процСсс измСнСния исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΡ€ΠΈ сохранСнии работоспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ обфускация примСняСтся для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΎΡ‚ нСсанкционированного доступа ΠΈ копирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ для услоТнСния процСсса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (`reverse engeneering`). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ обфускация Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³Π°. Однако, для ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ людьми. Π’ контСкстС фриланса, это отличная Π·Π°Ρ‰ΠΈΡ‚Π°. Помимо Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ способа, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это вСсьма Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ занятиС, сущСствуСт нСсколько инструмСнтов, Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…: 1. **PyArmor** β€” это инструмСнт для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Python скриптов ΠΎΡ‚ копирования. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ динамичСской Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π²ΠΎ врСмя выполнСния. [Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://github.com/dashingsoft/pyarmor). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для обфускации с использованиСм PyArmor: ``` pyarmor pack script.py ``` 1. **Nuitka** β€” нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Nuitka это компилятор Python, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обфускации ΠΊΠΎΠ΄Π°. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ затрудняСт Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://nuitka.net/). 2. **Python Minifier** β€” это инструмСнт для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ обфускации Python ΠΊΠΎΠ΄Π°. Он удаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ· исходного ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² случайныС названия. [Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://github.com/dflook/python-minifier). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм Python Minifier: ``` pyminify example.py --output example.min.py ``` ## Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² постС? Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для примСнСния ΠΈ комбинирования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΌΡ‹ остановимся Π½Π° Π΄Π²ΡƒΡ…: 1. Рассмотрим процСсс обфускации ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `Python Minifier`, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠ°ΠΊΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `PyInstaller`. 2. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `Nuitka`. Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ нСзависимы ΠΈ Π²Ρ‹Π±ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° Π²Π°ΠΌΠΈ. Для большСй наглядности ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ описанныС Π²Ρ‹ΡˆΠ΅ процСссы Π½Π° ΠΏΡ€Ρ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ `MPF Tools Converter`, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я написал ΠΏΡ€ΠΈΡΡ‚Π΅Π»ΡŽ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ (написал Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ сСйчас Π½Π΅ ΠΎΠ± этом). Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ: [Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub](https://github.com/proDreams/mpf_tools_converter). ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ\! ### βš οΈΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!⚠️ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния сборки зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмы! Π’ΠΎ Π΅ΡΡ‚ΡŒ: запустив сборку Π½Π° Linux, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Linux, соотвСтствСнно, запустив сборку Π½Π° Windows, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Windows. Π Π°Π±ΠΎΡ‡Π΅Π³ΠΎ способа, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Linux Π²Π΅Ρ€ΡΠΈΡŽ для Windows, Π½Π΅ прибСгая ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС я Π½Π΅ Π½Π°ΡˆΡ‘Π». Если Π²Π°ΠΌ извСстСн способ, поТалуйста, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях\! ## Python Minifier + PyInstaller Π‘ `Python Minifier` всё понятно ΠΏΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ: ΠΎΠ½ выполняСт ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ β€” процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ² сокращаСтся Π·Π° счёт удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, инструмСнт ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ измСняСт структуру ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ слоТным для чтСния, Π½ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ### ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Python Minifier Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install python-minifier ``` По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ "ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€" ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ, Ссли Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² запуска: <https://dflook.github.io/python-minifier/command_usage.html> Π’ ΠΌΠΎΡ‘ΠΌ случаС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· `main.py-Ρ„Π°ΠΉΠ»Π°` ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° `app` с Π΅Ρ‰Ρ‘ двумя `.py-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ`. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ измСнСния. ``` pyminify main.py app/ --in-place ``` Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядСл `main.py` Π΄ΠΎ примСнСния: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134649520.png) А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ послС: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134726037.png) Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134749102.png) ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134809732.png) ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ наглядным ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Ρ‚.ΠΊ. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Flet ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ нСзависимом ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΊΠΎΠ΄Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π°Π·Π±ΠΎΡ€ всСго этого Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сил. МоТно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119135016799.png) ### ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyInstaller ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ приступим, Π΄Π°Π²Π°ΠΉΡ‚Π΅ познакомимся с `PyInstaller` ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅. #### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности PyInstaller: - АвтоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Windows, macOS, Linux). - Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GUI. #### Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PyInstaller? PyInstaller Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Python, опрСдСляСт зависимости (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн: - ΠΎΠ΄Π½ΠΈΠΌ большим исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ (Ρ€Π΅ΠΆΠΈΠΌ `onefile`). - ΠΏΠ°ΠΏΠΊΠΎΠΉ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈ всСми зависимостями (Ρ€Π΅ΠΆΠΈΠΌ `onedir`). PyInstaller ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python, добавляя Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Python-скрипт Π²Π½ΡƒΡ‚Ρ€ΠΈ скомпилированного окруТСния. #### Установка ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install -U pyinstaller ``` Π£ PyInstaller ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сборку исполняСмого Ρ„Π°ΠΉΠ»Π° "ΠΏΠΎΠ΄ сСбя". ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² доступСн Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: <https://pyinstaller.org/en/stable/usage.html> Π’ ΠΌΠΎΡ‘ΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: ``` pyinstaller --noconfirm --onefile --noconsole \ --name 'MPF Converting Tool' --icon './favicon.ico' \ --add-data './app:app/' \ 'main.py' ``` Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: - `--noconfirm` - Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ запрос подтвСрТдСния ΠΏΡ€ΠΈ пСрСзаписи ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² сборки. PyInstaller Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопросов Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π½Π΅Π΅ созданныС Ρ„Π°ΠΉΠ»Ρ‹. - `--onefile` - ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС зависимости ΠΈ саму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для распространСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ рядом. - `--noconsole` - Π£Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ консольного ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПолСзно для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ консоль Π½Π΅ Π½ΡƒΠΆΠ½Π°. - `--name 'MPF Converting Tool'` - Π—Π°Π΄Π°Ρ‘Ρ‚ имя для создаваСмого исполняСмого Ρ„Π°ΠΉΠ»Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ `MPF Converting Tool.exe` (Π½Π° Windows) ΠΈΠ»ΠΈ просто `MPF Converting Tool` (Π½Π° Linux/MacOS). - `--icon './favicon.ico'` - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠΊΠΎΠ½ΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для созданного исполняСмого Ρ„Π°ΠΉΠ»Π°. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ `favicon.ico`. - `--add-data './app:app/'` - ДобавляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² сборку. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠ°ΠΏΠΊΠ° `./app` добавляСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступна Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ `app/`. Π€ΠΎΡ€ΠΌΠ°Ρ‚ записи: `source:destination`. - `'main.py'` - Основной Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ PyInstaller Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² исполняСмый Ρ„Π°ΠΉΠ». #### Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ начнётся процСсс сборки. Если всё ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ запись "27927 INFO: Building EXE from EXE-00.toc completed successfully.". Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ PyInstaller появится Π΄Π²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: `build` ΠΈ `dist`. ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142053005.png) Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `build` содСрТатся Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для сборки, Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `dist` ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ `dist` Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅. Π’Π°ΠΌ находится исполняСмый Ρ„Π°ΠΉΠ». ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142153175.png) Запустим Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142232500.png) Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, просто ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΈΡ… рядом: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142320092.png) И запустим снова: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142346840.png) Π‘Π»Π΅Ρ‚Π΅Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° прилоТСния, Π½ΠΎ это, скорСС всСго связанно с запуском Π½Π° Linux. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ### Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Python Minifier + PyInstaller ΠŸΡ€ΠΎΡ†Π΅ΡΡ достаточно прост ΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ трудностСй. Python Minifier Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ справляСтся со своСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ - ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ это Π½Π΅ панацСя ΠΈ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ инструмСнты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‚ ΠΆΠ΅ PyArmor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π½ΠΎ ΠΎΠ½ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТСн Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ Π·Π°Π΄Π°Ρ‡ для фриланса, это каТСтся излишним. Π§Ρ‚ΠΎ касаСтся PyInstaller, Ρ‚ΠΎ это Тивая классика. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°: ΠΏΠΎΡ‡Ρ‚ΠΈ 40 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚! И это всСго Ρ‚Ρ€ΠΈ `.py-Ρ„Π°ΠΉΠ»Π°` + нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. ## ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Nuitka Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ **Nuitka** ΠΈ Ρ‡Π΅ΠΌ этот процСсс отличаСтся ΠΎΡ‚ использования **PyInstaller** ΠΈ обфускации с **Python Minifier**. ### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Nuitka: - Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Python ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. - Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания нСзависимых исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ². ### ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Nuitka: 1. Анализ исходного ΠΊΠΎΠ΄Π° Python для опрСдСлСния всСх зависимостСй ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. 2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π΅Π· нСобходимости наличия Python. ### Как Nuitka отличаСтся ΠΎΡ‚ PyInstaller? | **Π₯арактСристика** | **PyInstaller** | **Nuitka** | |---|---|---| | **Π’ΠΈΠΏ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ** | Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ Python-скрипт с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ модулями | ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Python-ΠΊΠΎΠ΄ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· C | | **Π Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°** | ΠžΠ±Ρ‹Ρ‡Π½ΠΎ большС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ | МСньшС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ | | **ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ** | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ такая ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ исходного ΠΊΠΎΠ΄Π° | Π’Ρ‹ΡˆΠ΅ Π·Π° счёт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ машинного ΠΊΠΎΠ΄Π° | | **Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ** | ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python | ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с модулями C API | | **ЦСль** | Быстрая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° для распространСния | Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ компиляция | Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, `Nuitka` ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ `PyInstaller`, Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исполняСмого Ρ„Π°ΠΉΠ»Π°. ### НуТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Minifier ΠΏΠ΅Ρ€Π΅Π΄ Nuitka? Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ сцСнария с `PyInstaller`, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ минификация ΠΈΠ»ΠΈ обфускация ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм `Nuitka` ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ трСбуСтся. Π‘Π°ΠΌ процСсс компиляции ΡƒΠΆΠ΅ затрудняСт восстановлСниС Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Если ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ, `Nuitka` ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΈ бСсплатныС вСрсии: - **БСсплатная вСрсия** Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» компиляции Python-ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ, обСспСчивая Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ простого чтСния исходного ΠΊΠΎΠ΄Π°. - **ΠŸΠ»Π°Ρ‚Π½Π°Ρ вСрсия** (Commercial Edition) добавляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ встроСнная обфускация, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ оптимизация для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС коммСрчСской вСрсии, которая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обфускации прямо Π² процСсс компиляции. ### Установка Nuitka Для установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install -U nuitka ``` Для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Nuitka Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС C-компилятора. - **Для Windows:** - [Visual Studio 2022](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx) ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅. **НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с VisualStudio Code / VSCode\!** Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Английский язык Π² Visual Studio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Nuitka ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π΅Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π»Π° Π²Ρ‹Π²ΠΎΠ΄ компилятора. - ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ `MinGW64`. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ `--mingw64`. `Nuitka` ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ссли Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Visual Studio. - НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы, прСдоставляСмыС ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Visual Studio ΠΈ MinGW64. - **Для Lunux:** ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ `GCC-компилятор` ΠΈΠ»ΠΈ установлСнный `clang`. - **Для macOS:** ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмный Clang. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, установитС `XCode` ΠΈΠ· `Apple Store`. ### Запуск сборки Для запуска Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` nuitka --standalone --onefile --output-filename="MPF Converting Tool" \ --windows-disable-console --windows-icon-from-ico=./favicon.ico \ main.py ``` Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: 1. `--standalone` - Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с зависимостями, создавая Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». 2. `--onefile` - Π£ΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всё Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». 3. `--output-filename="MPF Converting Tool"` - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. (Для **Windows** Π² ΠΊΠΎΠ½Π΅Ρ† Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ `.exe`!) 4. `--windows-disable-console` - ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ консольноС ΠΎΠΊΠ½ΠΎ для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. 5. `--windows-icon-from-ico=./favicon.ico` - ДобавляСт ΠΈΠΊΠΎΠ½ΠΊΡƒ для исполняСмого Ρ„Π°ΠΉΠ»Π°. 6. `main.py` - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ### Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‚ΠΎΡ€ΠΎΠΏΠ»ΠΈΠ²Ρ‹ΠΌ ΠΈ Π·Π°Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя. Π’ процСссС Π±ΡƒΠ΄Π΅Ρ‚ создано Ρ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: `main.build`, `main.dist` ΠΈ `main.onefile-build`, содСрТащиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° появится Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ исполняСмый Ρ„Π°ΠΉΠ»: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119160648051.png) Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ запустим, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² работоспособности: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119160735127.png) ### Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Nuitka ΠŸΡ€ΠΈ Π±Π΅Π³Π»ΠΎΠΌ знакомствС, `Nuitka` каТСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² сСбя ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ услоТнСниС "Ρ€Π°Π·Π±ΠΎΡ€Π°" Ρ„Π°ΠΉΠ»Π° Π½Π° исходный ΠΊΠΎΠ΄. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 31 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ мСньшС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° `PyInstaller` Π½Π° 10 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Π½ΠΎ Π½Π΅ каТСтся Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ успСхом. ВСроятно, зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ## Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π‘Ρ‹Π»ΠΎ интСрСсно Π² процСссС написания поста ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ### Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” PyInstaller ΠΈΠ»ΠΈ Nuitka? - Если ваша основная Ρ†Π΅Π»ΡŒ β€” быстро ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, **PyInstaller** ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅: ΠΎΠ½ ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. - Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ **Nuitka**. Всё описанноС Π²Ρ‹ΡˆΠ΅, Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π² ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ, Π° лишь описаниС способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ своСго Ρ‚Ρ€ΡƒΠ΄Π°. Бпособов Π½Π° самом Π΄Π΅Π»Π΅ ΠΊΡƒΠ΄Π° большС ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ слоТнСС ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, остаётся Π·Π° Π²Π°ΠΌΠΈ. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» [«Код Π½Π° салфСткС»](https://t.me/+gCWO9K8Dd642NTYy). Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Если Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ β€” Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² Telegram Π°Π²Ρ‚ΠΎΡ€Π°. ![Аватар Π°Π²Ρ‚ΠΎΡ€Π°](https://pressanybutton.ru/media/user/avatars/proDreamss.png) ### Автор #### [Иван ΠΡˆΠΈΡ…ΠΌΠΈΠ½](https://pressanybutton.ru/user/proDream/) ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚, фрилансСр ΠΈ Π°Π²Ρ‚ΠΎΡ€ Π³Π°ΠΉΠ΄ΠΎΠ². Π—Π°Π½ΠΈΠΌΠ°ΡŽΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π±ΠΎΡ‚ΠΎΠ², сайтов ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ. [Telegram](https://t.me/proDreams) [GitHub](https://github.com/proDreams) [Π‘Π°ΠΉΡ‚](https://pressanybutton.ru/) [ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ](https://boosty.to/prodream) ## ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ⬆️ НавСрх ## ВсС ΡΡ‚Π°Ρ‚ΡŒΠΈ Γ— - [Selectolax: быстрая Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Beautiful Soup](https://pressanybutton.ru/post/poleznye-instrumenty/selectolax-bystraya-alternativa-beautiful-soup/) 30 ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ 2025 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/selectolax-bystraya-alternativa-beautiful-soup/#comments) - [ΠžΠ±Π·ΠΎΡ€ WSGI, ASGI ΠΈ RSGI: Π»ΠΈΠ΄Π΅Ρ€Ρ‹ срСди Π²Π΅Π±-сСрвСров Π² 2025 Π³ΠΎΠ΄Ρƒ](https://pressanybutton.ru/post/poleznye-instrumenty/obzor-wsgi-asgi-i-rsgi-lidery-sredi-veb-serverov-v-2025-godu/) 18 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2025 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/obzor-wsgi-asgi-i-rsgi-lidery-sredi-veb-serverov-v-2025-godu/#comments) - [Napkin Random Bot: ΠΊΠ°ΠΊ ΠΌΡ‹ создали Π±ΠΎΡ‚Π° для чСстных Ρ€ΠΎΠ·Ρ‹Π³Ρ€Ρ‹ΡˆΠ΅ΠΉ](https://pressanybutton.ru/post/poleznye-instrumenty/napkin-random-bot-kak-my-sozdali-bota-dlya-chestnyh-rozygryshej/) 04 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2025 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/napkin-random-bot-kak-my-sozdali-bota-dlya-chestnyh-rozygryshej/#comments) - [Uptime Kuma 2 установка ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСрвисов Π±Π΅Π· VPS](https://pressanybutton.ru/post/poleznye-instrumenty/uptime-kuma-2-ustanovka-i-monitoring-servisov-bez-vps/) 28 Август 2025 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/uptime-kuma-2-ustanovka-i-monitoring-servisov-bez-vps/#comments) - [БСсплатный Π°Π½Π°Π»ΠΎΠ³ ChatGPT Π½Π° своём ПК](https://pressanybutton.ru/post/poleznye-instrumenty/besplatnyj-analog-chatgpt-na-svoyom-pk/) 28 ΠΠΎΡΠ±Ρ€ΡŒ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/besplatnyj-analog-chatgpt-na-svoyom-pk/#comments) - [Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² EXE-Ρ„Π°ΠΉΠ» ΠΈ обфускация ΠΊΠΎΠ΄Π°](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/) 21 ΠΠΎΡΠ±Ρ€ΡŒ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#comments) Π’Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ - [Obsidian LiveSync - совмСстная Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ](https://pressanybutton.ru/post/poleznye-instrumenty/obsidian-livesync-sovmestnaya-rabota-nad-proektnoj/) 10 ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/obsidian-livesync-sovmestnaya-rabota-nad-proektnoj/#comments) - [Π’Π΅Π±-сСрвСр Caddy - ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° NGINX ΠΈ Apache](https://pressanybutton.ru/post/poleznye-instrumenty/veb-server-caddy-alternativa-nginx-i-apache/) 15 Август 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/veb-server-caddy-alternativa-nginx-i-apache/#comments) - [Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ VPS Π½Π° ЯндСкс Диск](https://pressanybutton.ru/post/poleznye-instrumenty/sozdanie-rezervnyh-kopij-vps-na-yandeks-disk/) 27 ΠœΠ°Ρ€Ρ‚ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/sozdanie-rezervnyh-kopij-vps-na-yandeks-disk/#comments) - [Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Django-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Replit](https://pressanybutton.ru/post/poleznye-instrumenty/razvorachivanie-django-proekta-na-replit/) 06 ΠœΠ°Ρ€Ρ‚ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/razvorachivanie-django-proekta-na-replit/#comments) - [Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Django-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° PythonAnyWhere](https://pressanybutton.ru/post/poleznye-instrumenty/razvorachivanie-django-proekta-na-pythonanywhere/) 08 Π€Π΅Π²Ρ€Π°Π»ΡŒ 2024 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/razvorachivanie-django-proekta-na-pythonanywhere/#comments) - [Cpp FreeGPT WebUI - БСсплатный GPT Π½Π° вашСм сСрвСрС](https://pressanybutton.ru/post/poleznye-instrumenty/cpp-freegpt-webui-besplatnyj-gpt-na-vashem-servere/) 29 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2023 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/cpp-freegpt-webui-besplatnyj-gpt-na-vashem-servere/#comments) - [Certbot - бСсплатный SSL-сСртификат для сайта](https://pressanybutton.ru/post/poleznye-instrumenty/certbot-besplatnyj-ssl-sertifikat-dlya-sajta/) 22 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2023 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/certbot-besplatnyj-ssl-sertifikat-dlya-sajta/#comments) - [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π² Bootstrap5](https://pressanybutton.ru/post/poleznye-instrumenty/poleznye-instrumenty-pereklyuchatel-cvetovoj-temy/) 06 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2023 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/poleznye-instrumenty-pereklyuchatel-cvetovoj-temy/#comments) - [ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты. Jazzmin - шаблон ΠΏΠ°Π½Π΅Π»ΠΈ администратора Django](https://pressanybutton.ru/post/poleznye-instrumenty/poleznye-instrumenty-jazzmin-shablon-paneli-admini/) 06 Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ 2023 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/poleznye-instrumenty-jazzmin-shablon-paneli-admini/#comments) - [НЕ ΠΠšΠ’Π£ΠΠ›Π¬ΠΠž! БСсплатный Chat-GPT4 Π½Π° вашСм ПК ΠΈΠ»ΠΈ сСрвСрС](https://pressanybutton.ru/post/poleznye-instrumenty/besplatnyj-chat-gpt4-na-vashem-pk-ili-servere/) 02 Август 2023 [ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ](https://pressanybutton.ru/post/poleznye-instrumenty/besplatnyj-chat-gpt4-na-vashem-pk-ili-servere/#comments) НичСго Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ запрос. ### Бсылки - ![ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚](https://pressanybutton.ru/media/social-links/Color.png) [ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚](https://boosty.to/prodream) - ![RSS-Π»Π΅Π½Ρ‚Π° послСдних постов](https://pressanybutton.ru/media/social-links/icons8-rss-32.png) [RSS-Π»Π΅Π½Ρ‚Π° послСдних постов](https://pressanybutton.ru/feeds/latest/) - ![Telegram-ΠΊΠ°Π½Π°Π»](https://pressanybutton.ru/media/social-links/icons8-%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-app-32.png) [Telegram-ΠΊΠ°Π½Π°Π»](https://t.me/napkincode) ## ОглавлСниС - [Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сборка исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#chto-takoe-sborka-ispolnyaemogo-fajla-exe) - [Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#chto-takoe-obfuskatsiya-koda) - [Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² постС?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#chto-budet-rassmatrivatsya-v-poste) - [βš οΈΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!⚠️](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#obratite-vnimanie) - [Python Minifier + PyInstaller](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#python-minifier--pyinstaller) - [ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Python Minifier](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#primenenie-python-minifier) - [ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyInstaller](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#primenenie-pyinstaller) - [ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности PyInstaller:](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#osnovnyie-osobennosti-pyinstaller) - [Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PyInstaller?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#kak-rabotaet-pyinstaller) - [Установка ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#ustanovka-i-primenenie) - [Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#rezultat-vyipolneniya) - [Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Python Minifier + PyInstaller](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#itog-po-ispolzovaniyu-python-minifier--pyinstaller) - [ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Nuitka](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#kompiliruem-proekt-v-nuitka) - [ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Nuitka:](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#osnovnyie-osobennosti-nuitka) - [ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Nuitka:](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#protsess-rabotyi-nuitka) - [Как Nuitka отличаСтся ΠΎΡ‚ PyInstaller?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#kak-nuitka-otlichaetsya-ot-pyinstaller) - [НуТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Minifier ΠΏΠ΅Ρ€Π΅Π΄ Nuitka?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#nuzhno-li-ispolzovat-python-minifier-pered-nuitka) - [Установка Nuitka](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#ustanovka-nuitka) - [Запуск сборки](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#zapusk-sborki) - [Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#rezultat-vyipolneniya) - [Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Nuitka](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#itog-po-ispolzovaniyu-nuitka) - [Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#zaklyuchenie) - [Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” PyInstaller ΠΈΠ»ΠΈ Nuitka?](https://pressanybutton.ru/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/#chto-luchshe---pyinstaller-ili-nuitka) ### ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ [Код Π½Π° салфСткС](https://pressanybutton.ru/) Π“Π°ΠΉΠ΄Ρ‹, ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ###### Навигация - [Π“Π°ΠΉΠ΄Ρ‹](https://pressanybutton.ru/category/gajdy/) - [Π‘Π²Π΅ΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ](https://pressanybutton.ru/#latest) ###### ΠŸΡ€Π°Π²ΠΎΠ²Π°Ρ информация - [ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…](https://pressanybutton.ru/privacy-policy/) ИспользованиС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² сайта pressanybutton.ru Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ c письмСнного согласия Π°Π²Ρ‚ΠΎΡ€ΠΎΠ². *** 2023–2026 Β© «Код Π½Π° салфСткС» [Telegram](https://t.me/press_any_button) [info@pressanybutton.ru](mailto:info@pressanybutton.ru) ↑ НавСрх Π­Ρ‚ΠΎΡ‚ сайт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ cookie для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ вашСго ΠΎΠΏΡ‹Ρ‚Π°. БогласСн
Readable Markdown
Работая Π½Π° фрилансС, ΠΏΠΎΠΌΠΈΠΌΠΎ выполнСния своСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ сохранности своСго Ρ‚Ρ€ΡƒΠ΄Π°. Π§Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ? Π’Π°ΠΌ скорСС всСго извСстны риски фриланса, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ отправляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, Π° Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ оплачивая Π΅Ρ‘. НС Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² спСцифику фриланса, Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ бСзопасных способах ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ "Π΄Π΅ΠΌΠΎ вСрсии". БущСствуСт нСсколько способов бСзопасно ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, минимизируя риски Π½Π΅ΠΎΠΏΠ»Π°Ρ‚Ρ‹: 1. **ДСмонстрация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ доступ.** Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ - Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° своём ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ сСрвСрС, прСдоставив доступ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Telegram-Π±ΠΎΡ‚Π° ΠΈΠ»ΠΈ Π²Π΅Π±-сСрвис). 2. **Π‘Π±ΠΎΡ€ΠΊΠ° исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)** Π’Π°ΠΊΠΎΠΉ способ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Ρƒ сСбя, прописав ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ) ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°Ρ‡Π° прСдставляСт собой GUI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. 3. **Π‘Π±ΠΎΡ€ΠΊΠ° exe-Ρ„Π°ΠΉΠ»Π° с обфускациСй ΠΊΠΎΠ΄Π°** Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹: обфускация услоТняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· исходного ΠΊΠΎΠ΄Π°. Π₯отя ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСуязвимым для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π΅Π΅ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (`reverse engeneering`). Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ способ понятСн ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ объяснСния. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» [«Код Π½Π° салфСткС»](https://t.me/+gCWO9K8Dd642NTYy). Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². ## Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сборка исполняСмого Ρ„Π°ΠΉΠ»Π° (exe)? Π‘Π±ΠΎΡ€ΠΊΠ° Π² исполняСмый (`exe`) Ρ„Π°ΠΉΠ» прСдставляСт собой ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ„Π°ΠΉΠ»/Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для запуска Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ прСдустановлСн ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. МнС извСстны Π΄Π²Π° способа сборки: 1. **Π—Π°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° срСдствами PyInstaller** β€” это инструмСнт для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Он собираСт Python-скрипт вмСстС с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, модулями ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ, ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для распространСния. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://pyinstaller.org/en/stable/). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания `exe`\-Ρ„Π°ΠΉΠ»Π°: ``` pyinstaller --onefile script.py ``` 1. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ срСдствами Nuitka** β€” это компилятор для языка Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Python Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² зависимости ΠΎΡ‚ настроСк), Ρ‡Ρ‚ΠΎ ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… нСзависимыми ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. Nuitka Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π±Π΅Π· нСобходимости наличия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://nuitka.net/). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для компиляции с использованиСм Nuitka: ``` nuitka --standalone script.py ``` ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· способов ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ своими плюсами ΠΈ минусами, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. ## Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ обфускация ΠΊΠΎΠ΄Π°? **ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°** β€” это процСсс измСнСния исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΏΡ€ΠΈ сохранСнии работоспособности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ обфускация примСняСтся для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΎΡ‚ нСсанкционированного доступа ΠΈ копирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ для услоТнСния процСсса ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (`reverse engeneering`). Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ обфускация Π½Π΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠ½Π³Π°. Однако, для ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ людьми. Π’ контСкстС фриланса, это отличная Π·Π°Ρ‰ΠΈΡ‚Π°. Помимо Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ способа, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это вСсьма Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ занятиС, сущСствуСт нСсколько инструмСнтов, Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…: 1. **PyArmor** β€” это инструмСнт для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Python скриптов ΠΎΡ‚ копирования. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ динамичСской Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Π²ΠΎ врСмя выполнСния. [Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://github.com/dashingsoft/pyarmor). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для обфускации с использованиСм PyArmor: ``` pyarmor pack script.py ``` 1. **Nuitka** β€” нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Nuitka это компилятор Python, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обфускации ΠΊΠΎΠ΄Π°. Он ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ затрудняСт Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. [Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°](https://nuitka.net/). 2. **Python Minifier** β€” это инструмСнт для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ обфускации Python ΠΊΠΎΠ΄Π°. Он удаляСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ· исходного ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² случайныС названия. [Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://github.com/dflook/python-minifier). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм Python Minifier: ``` pyminify example.py --output example.min.py ``` ## Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² постС? Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² для примСнСния ΠΈ комбинирования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² достаточно ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΌΡ‹ остановимся Π½Π° Π΄Π²ΡƒΡ…: 1. Рассмотрим процСсс обфускации ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `Python Minifier`, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΠ°ΠΊΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `PyInstaller`. 2. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ `Nuitka`. Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ нСзависимы ΠΈ Π²Ρ‹Π±ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π° Π²Π°ΠΌΠΈ. Для большСй наглядности ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ описанныС Π²Ρ‹ΡˆΠ΅ процСссы Π½Π° ΠΏΡ€Ρ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ `MPF Tools Converter`, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я написал ΠΏΡ€ΠΈΡΡ‚Π΅Π»ΡŽ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ (написал Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ сСйчас Π½Π΅ ΠΎΠ± этом). Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ: [Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub](https://github.com/proDreams/mpf_tools_converter). ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ\! ### βš οΈΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!⚠️ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния сборки зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмы! Π’ΠΎ Π΅ΡΡ‚ΡŒ: запустив сборку Π½Π° Linux, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Linux, соотвСтствСнно, запустив сборку Π½Π° Windows, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ исполняСмый Ρ„Π°ΠΉΠ» для Windows. Π Π°Π±ΠΎΡ‡Π΅Π³ΠΎ способа, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Linux Π²Π΅Ρ€ΡΠΈΡŽ для Windows, Π½Π΅ прибСгая ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС я Π½Π΅ Π½Π°ΡˆΡ‘Π». Если Π²Π°ΠΌ извСстСн способ, поТалуйста, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях\! ## Python Minifier + PyInstaller Π‘ `Python Minifier` всё понятно ΠΏΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ: ΠΎΠ½ выполняСт ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ β€” процСсс ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ² сокращаСтся Π·Π° счёт удалСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, инструмСнт ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ измСняСт структуру ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ слоТным для чтСния, Π½ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΈΡ… ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ### ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Python Minifier Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install python-minifier ``` По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ "ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€" ΠΌΠΈΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ, Ссли Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² запуска: <https://dflook.github.io/python-minifier/command_usage.html> Π’ ΠΌΠΎΡ‘ΠΌ случаС, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ состоит ΠΈΠ· `main.py-Ρ„Π°ΠΉΠ»Π°` ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° `app` с Π΅Ρ‰Ρ‘ двумя `.py-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ`. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ измСнСния. ``` pyminify main.py app/ --in-place ``` Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядСл `main.py` Π΄ΠΎ примСнСния: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134649520.png) А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ послС: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134726037.png) Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134749102.png) ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119134809732.png) ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ наглядным ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ, Ρ‚.ΠΊ. ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Flet ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ нСзависимом ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΊΠΎΠ΄Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π°Π·Π±ΠΎΡ€ всСго этого Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ сил. МоТно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ запустив ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119135016799.png) ### ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyInstaller ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ приступим, Π΄Π°Π²Π°ΠΉΡ‚Π΅ познакомимся с `PyInstaller` ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅. #### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности PyInstaller: - АвтоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… зависимостСй ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Windows, macOS, Linux). - Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GUI. #### Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PyInstaller? PyInstaller Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Python, опрСдСляСт зависимости (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн: - ΠΎΠ΄Π½ΠΈΠΌ большим исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ (Ρ€Π΅ΠΆΠΈΠΌ `onefile`). - ΠΏΠ°ΠΏΠΊΠΎΠΉ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈ всСми зависимостями (Ρ€Π΅ΠΆΠΈΠΌ `onedir`). PyInstaller ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python, добавляя Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Python-скрипт Π²Π½ΡƒΡ‚Ρ€ΠΈ скомпилированного окруТСния. #### Установка ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install -U pyinstaller ``` Π£ PyInstaller ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сборку исполняСмого Ρ„Π°ΠΉΠ»Π° "ΠΏΠΎΠ΄ сСбя". ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² доступСн Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: <https://pyinstaller.org/en/stable/usage.html> Π’ ΠΌΠΎΡ‘ΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: ``` pyinstaller --noconfirm --onefile --noconsole \ --name 'MPF Converting Tool' --icon './favicon.ico' \ --add-data './app:app/' \ 'main.py' ``` Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: - `--noconfirm` - Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ запрос подтвСрТдСния ΠΏΡ€ΠΈ пСрСзаписи ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² сборки. PyInstaller Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вопросов Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π½Π΅Π΅ созданныС Ρ„Π°ΠΉΠ»Ρ‹. - `--onefile` - ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС зависимости ΠΈ саму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для распространСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΏΠΎΠΊ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ рядом. - `--noconsole` - Π£Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ консольного ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПолСзно для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ консоль Π½Π΅ Π½ΡƒΠΆΠ½Π°. - `--name 'MPF Converting Tool'` - Π—Π°Π΄Π°Ρ‘Ρ‚ имя для создаваСмого исполняСмого Ρ„Π°ΠΉΠ»Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ `MPF Converting Tool.exe` (Π½Π° Windows) ΠΈΠ»ΠΈ просто `MPF Converting Tool` (Π½Π° Linux/MacOS). - `--icon './favicon.ico'` - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠΊΠΎΠ½ΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для созданного исполняСмого Ρ„Π°ΠΉΠ»Π°. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ `favicon.ico`. - `--add-data './app:app/'` - ДобавляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² сборку. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠ°ΠΏΠΊΠ° `./app` добавляСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доступна Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ `app/`. Π€ΠΎΡ€ΠΌΠ°Ρ‚ записи: `source:destination`. - `'main.py'` - Основной Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ PyInstaller Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² исполняСмый Ρ„Π°ΠΉΠ». #### Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ начнётся процСсс сборки. Если всё ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ запись "27927 INFO: Building EXE from EXE-00.toc completed successfully.". Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ PyInstaller появится Π΄Π²Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: `build` ΠΈ `dist`. ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142053005.png) Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `build` содСрТатся Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для сборки, Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ `dist` ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ `dist` Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅. Π’Π°ΠΌ находится исполняСмый Ρ„Π°ΠΉΠ». ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142153175.png) Запустим Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142232500.png) Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, просто ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΈΡ… рядом: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142320092.png) И запустим снова: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119142346840.png) Π‘Π»Π΅Ρ‚Π΅Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° прилоТСния, Π½ΠΎ это, скорСС всСго связанно с запуском Π½Π° Linux. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ»Π°ΡΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ### Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Python Minifier + PyInstaller ΠŸΡ€ΠΎΡ†Π΅ΡΡ достаточно прост ΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ трудностСй. Python Minifier Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ справляСтся со своСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ - ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ это Π½Π΅ панацСя ΠΈ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ инструмСнты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‚ ΠΆΠ΅ PyArmor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹, Π½ΠΎ ΠΎΠ½ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТСн Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈ Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ Π·Π°Π΄Π°Ρ‡ для фриланса, это каТСтся излишним. Π§Ρ‚ΠΎ касаСтся PyInstaller, Ρ‚ΠΎ это Тивая классика. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°: ΠΏΠΎΡ‡Ρ‚ΠΈ 40 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚! И это всСго Ρ‚Ρ€ΠΈ `.py-Ρ„Π°ΠΉΠ»Π°` + нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python. ## ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Nuitka Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ **Nuitka** ΠΈ Ρ‡Π΅ΠΌ этот процСсс отличаСтся ΠΎΡ‚ использования **PyInstaller** ΠΈ обфускации с **Python Minifier**. ### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ особСнности Nuitka: - Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Python ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. - Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания нСзависимых исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ². ### ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Nuitka: 1. Анализ исходного ΠΊΠΎΠ΄Π° Python для опрСдСлСния всСх зависимостСй ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. 2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π΅Π· нСобходимости наличия Python. ### Как Nuitka отличаСтся ΠΎΡ‚ PyInstaller? | **Π₯арактСристика** | **PyInstaller** | **Nuitka** | |---|---|---| | **Π’ΠΈΠΏ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ** | Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ Python-скрипт с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ модулями | ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Python-ΠΊΠΎΠ΄ Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· C | | **Π Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°** | ΠžΠ±Ρ‹Ρ‡Π½ΠΎ большС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ | МСньшС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ | | **ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ** | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ такая ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ исходного ΠΊΠΎΠ΄Π° | Π’Ρ‹ΡˆΠ΅ Π·Π° счёт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ машинного ΠΊΠΎΠ΄Π° | | **Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ** | ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python | ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с модулями C API | | **ЦСль** | Быстрая ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° для распространСния | Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ компиляция | Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, `Nuitka` ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ `PyInstaller`, Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° исполняСмого Ρ„Π°ΠΉΠ»Π°. ### НуТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Minifier ΠΏΠ΅Ρ€Π΅Π΄ Nuitka? Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ сцСнария с `PyInstaller`, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ минификация ΠΈΠ»ΠΈ обфускация ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ использованиСм `Nuitka` ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ трСбуСтся. Π‘Π°ΠΌ процСсс компиляции ΡƒΠΆΠ΅ затрудняСт восстановлСниС Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Если ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ, `Nuitka` ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ ΠΈ бСсплатныС вСрсии: - **БСсплатная вСрсия** Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» компиляции Python-ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ, обСспСчивая Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ простого чтСния исходного ΠΊΠΎΠ΄Π°. - **ΠŸΠ»Π°Ρ‚Π½Π°Ρ вСрсия** (Commercial Edition) добавляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ встроСнная обфускация, ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ оптимизация для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ срСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹, ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС коммСрчСской вСрсии, которая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обфускации прямо Π² процСсс компиляции. ### Установка Nuitka Для установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` pip install -U nuitka ``` Для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Nuitka Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² систСмС C-компилятора. - **Для Windows:** - [Visual Studio 2022](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx) ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅. **НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с VisualStudio Code / VSCode\!** Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Английский язык Π² Visual Studio, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Nuitka ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π΅Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π»Π° Π²Ρ‹Π²ΠΎΠ΄ компилятора. - ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ `MinGW64`. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ `--mingw64`. `Nuitka` ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Ссли Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Visual Studio. - НСкоторыС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы, прСдоставляСмыС ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ Visual Studio ΠΈ MinGW64. - **Для Lunux:** ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ `GCC-компилятор` ΠΈΠ»ΠΈ установлСнный `clang`. - **Для macOS:** ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмный Clang. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, установитС `XCode` ΠΈΠ· `Apple Store`. ### Запуск сборки Для запуска Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: ``` nuitka --standalone --onefile --output-filename="MPF Converting Tool" \ --windows-disable-console --windows-icon-from-ico=./favicon.ico \ main.py ``` Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: 1. `--standalone` - Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с зависимостями, создавая Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ». 2. `--onefile` - Π£ΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ всё Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ». 3. `--output-filename="MPF Converting Tool"` - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. (Для **Windows** Π² ΠΊΠΎΠ½Π΅Ρ† Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ `.exe`!) 4. `--windows-disable-console` - ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ консольноС ΠΎΠΊΠ½ΠΎ для графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. 5. `--windows-icon-from-ico=./favicon.ico` - ДобавляСт ΠΈΠΊΠΎΠ½ΠΊΡƒ для исполняСмого Ρ„Π°ΠΉΠ»Π°. 6. `main.py` - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ### Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Ρ‚ΠΎΡ€ΠΎΠΏΠ»ΠΈΠ²Ρ‹ΠΌ ΠΈ Π·Π°Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя. Π’ процСссС Π±ΡƒΠ΄Π΅Ρ‚ создано Ρ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: `main.build`, `main.dist` ΠΈ `main.onefile-build`, содСрТащиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° появится Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ исполняСмый Ρ„Π°ΠΉΠ»: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119160648051.png) Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ запустим, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² работоспособности: ![](https://pressanybutton.ru/media/post/2024/11/19/image-20241119160735127.png) ### Π˜Ρ‚ΠΎΠ³ ΠΏΠΎ использованию Nuitka ΠŸΡ€ΠΈ Π±Π΅Π³Π»ΠΎΠΌ знакомствС, `Nuitka` каТСтся ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ инструмСнтом для создания исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² сСбя ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ услоТнСниС "Ρ€Π°Π·Π±ΠΎΡ€Π°" Ρ„Π°ΠΉΠ»Π° Π½Π° исходный ΠΊΠΎΠ΄. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 31 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ мСньшС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° `PyInstaller` Π½Π° 10 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Π½ΠΎ Π½Π΅ каТСтся Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ успСхом. ВСроятно, зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ## Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π‘Ρ‹Π»ΠΎ интСрСсно Π² процСссС написания поста ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ### Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ β€” PyInstaller ΠΈΠ»ΠΈ Nuitka? - Если ваша основная Ρ†Π΅Π»ΡŒ β€” быстро ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ, **PyInstaller** ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅: ΠΎΠ½ ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. - Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ **Nuitka**. Всё описанноС Π²Ρ‹ΡˆΠ΅, Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π² ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ, Π° лишь описаниС способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ своСго Ρ‚Ρ€ΡƒΠ΄Π°. Бпособов Π½Π° самом Π΄Π΅Π»Π΅ ΠΊΡƒΠ΄Π° большС ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ слоТнСС ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, остаётся Π·Π° Π²Π°ΠΌΠΈ. Если Π²Π°ΠΌ интСрСсны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Telegram-ΠΊΠ°Π½Π°Π» [«Код Π½Π° салфСткС»](https://t.me/+gCWO9K8Dd642NTYy). Π’Π°ΠΌ я дСлюсь Π³Π°ΠΉΠ΄Π°ΠΌΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².
Shard75 (laksa)
Root Hash3052112393321575475
Unparsed URLru,pressanybutton!/post/poleznye-instrumenty/python-proektav-exe-fajl-i-obfuskaciya-koda/ s443