πŸ•·οΈ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 133 (from laksa053)

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
16 days ago
πŸ€–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.5 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://pythonru.com/biblioteki/pyinstaller
Last Crawled2026-03-21 06:38:40 (16 days ago)
First Indexed2021-03-29 18:02:22 (5 years ago)
HTTP Status Code200
Meta TitlePyInstaller β€” ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ python-скрипт Π² exe Ρ„Π°ΠΉΠ»
Meta DescriptionУстановка PyInstaller Установка PyInstaller Π½Π΅ отличаСтся ΠΎΡ‚ установки любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. pip install PyInstaller Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ
Meta Canonicalnull
Boilerpipe Text
Установка PyInstaller Π½Π΅ отличаСтся ΠΎΡ‚ установки любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. pip install PyInstaller Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ PyInstaller. pyinstaller --version Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ PyInstaller вСрсии 4.2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ exe Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller PyInstaller собираСт Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΅ΠΌΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» скрипта. АнализируСт ΠΊΠΎΠ΄ для выявлСния всСх зависимостСй, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» spec, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ скрипта, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ-зависимости, Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ PyInstaller. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠΏΠΈΠΈ всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² вмСстС с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ BUILD Π² ΠΏΠ°ΠΏΠΊΠ΅ со скриптом ΠΈ записываСт Π»ΠΎΠ³ΠΈ вмСстС с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² BUILD. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ DIST Π² ΠΏΠ°ΠΏΠΊΠ΅ со скриптом, Ссли ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт. ЗаписываСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ вмСстС со скриптом ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ, ΠΈΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ onedir ΠΈΠ»ΠΈ -D ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎΠ³Π΄Π° всС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile ΠΈΠ»ΠΈ -F , Ρ‚ΠΎ всС окаТСтся Π² ΠΎΠ΄Π½ΠΎΠΌ исполняСмом Ρ„Π°ΠΉΠ»Π΅. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ скрипт Π½Π° Python c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ simple.py, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄. import time name = input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ вашС имя ") print("Π’Π°ΡˆΠ΅ имя ", name) time.sleep(5) Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Π²Π΅Π΄ΠΈΡ‚Π΅: pyinstaller --onefile simple.py ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ, BUILD ΠΈ DIST, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .spec. Spec-Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ„Π°ΠΉΠ» скрипта. Python создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ распространСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит основной исполняСмый Ρ„Π°ΠΉΠ», Π° Ρ‚Π°ΠΊΠΆΠ΅ всС динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ послС запуска Ρ„Π°ΠΉΠ»Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ exe-Ρ„Π°ΠΉΠ»ΠΎΠΌ Π•ΡΡ‚ΡŒ CSV-Ρ„Π°ΠΉΠ» netflix_titles.csv , ΠΈ Python-script, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт количСство записСй Π² Π½Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² Π±Π°Π½Π΄Π» с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π€Π°ΠΉΠ» Python-скрипта Π½Π°Π·ΠΎΠ²Π΅ΠΌ просто simple1.py. import time # pip install pandas import pandas as pd def count_records(): data = pd.read_csv('netflix_titles.csv') print("ВсСго Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²:", data.shape[0]) if __name__ == "__main__": count_records() time.sleep(5) Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ исполняСмый Ρ„Π°ΠΉΠ» с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅. pyinstaller --add-data "netflix_titles.csv;." simple1.py ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --add-data позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°Π½Π΄Π»Π΅ с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Бинтаксис add-data: add-data <source;destination> β€” Windows. add-data <source:destination> β€” Linux. МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ добавляСтся Π² ΠΏΠ°ΠΏΠΊΡƒ DIST вмСстС с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅, ΠΎΡ‚ΠΊΡ€Ρ‹Π² spec-Ρ„Π°ΠΉΠ», ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» datas, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» netflix_titles.csv копируСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. ... a = Analysis(['simple1.py'], pathex=['E:\\myProject\\pyinstaller-tutorial'], binaries=[], datas=[('netflix_titles.csv', '.')], ... Запустим Ρ„Π°ΠΉΠ» simple1.exe, появится консоль с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ: ВсСго Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²: 7787 . Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile Если Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --onefile , Ρ‚ΠΎ PyInstaller распаковываСт всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ TEMP, выполняСт скрипт ΠΈ удаляСт TEMP. Если вмСстС с add-data ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ onefile, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ. ΠŸΡƒΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ мСняСтся ΠΈ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Β«_MEIxxxxxx-folderΒ». import time import sys import os # pip install pandas import pandas as pd def count_records(): os.chdir(sys._MEIPASS) data = pd.read_csv('netflix_titles.csv') print("ВсСго Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²:", data.shape[0]) if __name__ == "__main__": count_records() time.sleep(5) Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ для чтСния ΠΏΠ°ΠΏΠΊΠΈ TEMP ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ exe-Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ onefile ΠΈ add-data. pyinstaller --onefile --add-data "netflix_titles.csv;." simple1.py ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ создания Ρ„Π°ΠΉΠ» simple1.exe появится Π² ΠΏΠ°ΠΏΠΊΠ΅ DIST. МоТно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки, связанной с отсутствиСм Ρ„Π°ΠΉΠ»Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hidden Imports Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ всС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ Python-скрипту. Иногда PyInstaller ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ динамичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня, возвращая ΠΎΡˆΠΈΠ±ΠΊΡƒ ImportError: No module named … Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ошибки Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² hidden-import. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ os, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: pyinstaller --onefile --add-data "netflix_titles.csv;." β€” hidden-import "os" simple1.py Π€Π°ΠΉΠ» spec Π€Π°ΠΉΠ» spec β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ PyInstaller создаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС скрипта Python вмСстС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ запускС. PyInstaller считываСт содСрТимоС Ρ„Π°ΠΉΠ»Π° для создания исполняСмого Ρ„Π°ΠΉΠ»Π°, опрСдСляя всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ для Π½Π΅Π³ΠΎ. Π€Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .spec сохраняСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· ниТСпСрСчислСнных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» спСцификации: Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» с исполняСмым Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹: .dll ΠΈΠ»ΠΈ .so. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π΅ΡΡ‚ΡŒ скрипт simpleModel.py, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TensorFlow ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ вСрсии этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. import time import tensorflow as tf def view_model(): print(tf.__version__) if __name__ == "__main__" : model = view_model() time.sleep(5) ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ модСль с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller: pyinstaller -F simpleModel.py ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляции запускаСм исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ... File "site-packages\tensorflow_core\python_init_.py", line 49, in ImportError: cannot import name 'pywrap_tensorflow' from 'tensorflow_core.python' Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² Ρ„Π°ΠΉΠ» spec. Одно ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» spec. $ pyi-makespec simpleModel.py -F wrote E:\pyinstaller-tutorial\simpleModel.spec now run pyinstaller.py to build the executable Команда pyi-makespec создаСт spec-Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, содСрТащий всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π€Π°ΠΉΠ» simpleModel.spec создаСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Ρ‹Π» использован ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --onefile , Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π» exe. ... exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='simpleModel', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True ) Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ onedir, Ρ‚ΠΎ вмСстС с exe-Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ€Π°Π·Π΄Π΅Π» collect. МоТно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ simpleModel.spec ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст для создания Ρ…ΡƒΠΊΠΎΠ². # -*- mode: python ; coding: utf-8 -*- block_cipher = None import os spec_root = os.path.realpath(SPECPATH) options = [] from PyInstaller.utils.hooks import collect_submodules, collect_data_files tf_hidden_imports = collect_submodules('tensorflow_core') tf_datas = collect_data_files('tensorflow_core', subdir=None, include_py_files=True) a = Analysis(['simpleModel.py'], pathex=['E:\\myProject\\pyinstaller-tutorial'], binaries=[], datas=tf_datas + [], hiddenimports=tf_hidden_imports + [], hookspath=[], ... Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ…ΡƒΠΊΠΈ ΠΈ добавляСм ΠΈΡ… Π² hidden imports ΠΈ Ρ€Π°Π·Π΄Π΅Π» Π΄Π°Π½Π½Ρ‹Ρ…. Π₯ΡƒΠΊΠΈ Π€Π°ΠΉΠ»Ρ‹ Ρ…ΡƒΠΊΠΎΠ² Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ PyInstaller ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ трСбования, ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° своих зависимостСй, Π½ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ TensorFlow, сущСствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. PyInstaller Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠ· PyInstaller.utils.hooks ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ модСль послС обновлСния Ρ„Π°ΠΉΠ»Π° simpleModel.spec. pyinstaller simpleModel.spec Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ TensorFlow. Π’Ρ‹Π²ΠΎΠ΄: PyInstaller ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² создания простых ΠΈ слоТных исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Python-скриптов: Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» всС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° --add-data . Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ зависимыС Π΄Π°Π½Π½Ρ‹Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ --onefile ΠΈΠ»ΠΈ --onedir соотвСтствСнно. ДинамичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ hidden-imports . Π€Π°ΠΉΠ» spec позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ скрытых ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…ΡƒΠΊΠΎΠ².
Markdown
![](https://mc.yandex.ru/watch/52113229) - [ΠžΡΠ½ΠΎΠ²Ρ‹](https://pythonru.com/osnovy) - [Π£Ρ€ΠΎΠΊΠΈ](https://pythonru.com/uroki) - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹](https://pythonru.com/primery) - [Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://pythonru.com/biblioteki) - [Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ](https://pythonru.com/baza-znanij) [![PythonRu](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20272%2090'%3E%3C/svg%3E)![PythonRu](https://pythonru.com/wp-content/uploads/2018/11/pythonru-140x48.png)](https://pythonru.com/) [![PythonRu](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20272%2090'%3E%3C/svg%3E)![PythonRu](https://pythonru.com/wp-content/uploads/2018/11/pythonru-272x90.png) PythonRu](https://pythonru.com/) - [ΠžΡΠ½ΠΎΠ²Ρ‹](https://pythonru.com/osnovy) - [Π£Ρ€ΠΎΠΊΠΈ](https://pythonru.com/uroki) - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹](https://pythonru.com/primery) - [Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://pythonru.com/biblioteki) - [Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ](https://pythonru.com/baza-znanij) [Главная](https://pythonru.com/) [Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ](https://pythonru.com/biblioteki "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС посты Π² Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ") Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ exe Ρ„Π°ΠΉΠ» для Python ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller # Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ exe Ρ„Π°ΠΉΠ» для Python ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller ## Установка PyInstaller Установка PyInstaller Π½Π΅ отличаСтся ΠΎΡ‚ установки любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. ``` pip install PyInstaller ``` Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ PyInstaller. ``` pyinstaller --version ``` Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ PyInstaller вСрсии 4.2. ## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ exe Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller PyInstaller собираСт Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΅ΠΌΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: 1. Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» скрипта. 2. АнализируСт ΠΊΠΎΠ΄ для выявлСния всСх зависимостСй, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹. 3. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» spec, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ скрипта, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ-зависимости, Π»ΡŽΠ±Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ PyInstaller. 4. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠΏΠΈΠΈ всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² вмСстС с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python. 5. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ BUILD Π² ΠΏΠ°ΠΏΠΊΠ΅ со скриптом ΠΈ записываСт Π»ΠΎΠ³ΠΈ вмСстС с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² BUILD. 6. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ DIST Π² ΠΏΠ°ΠΏΠΊΠ΅ со скриптом, Ссли ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт. 7. ЗаписываСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ вмСстС со скриптом ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ, ΠΈΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `onedir` ΠΈΠ»ΠΈ `-D` ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ исполняСмого Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎΠ³Π΄Π° всС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `onefile` ΠΈΠ»ΠΈ `-F`, Ρ‚ΠΎ всС окаТСтся Π² ΠΎΠ΄Π½ΠΎΠΌ исполняСмом Ρ„Π°ΠΉΠ»Π΅. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ скрипт Π½Π° Python c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ simple.py, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄. [ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Use a different Browser]() ``` ``` Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ». Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π²Π²Π΅Π΄ΠΈΡ‚Π΅: ``` pyinstaller --onefile simple.py ``` ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ, BUILD ΠΈ DIST, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .spec. Spec-Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ„Π°ΠΉΠ» скрипта. ![ΠΏΠ°ΠΏΠΊΠΈ, BUILD ΠΈ DIST, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» .spec](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20619%20129'%3E%3C/svg%3E) ![ΠΏΠ°ΠΏΠΊΠΈ, BUILD ΠΈ DIST, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» .spec](https://pythonru.com/wp-content/uploads/2021/03/papki-build-i-dist-takzhe-fajl-spec.png) Python создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ распространСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит основной исполняСмый Ρ„Π°ΠΉΠ», Π° Ρ‚Π°ΠΊΠΆΠ΅ всС динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ![ исполняСмый Ρ„Π°ΠΉΠ»](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20515%20111'%3E%3C/svg%3E) ![ исполняСмый Ρ„Π°ΠΉΠ»](https://pythonru.com/wp-content/uploads/2021/03/ispolnyaemyj-fajl.png) Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ послС запуска Ρ„Π°ΠΉΠ»Π°. ## Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ exe-Ρ„Π°ΠΉΠ»ΠΎΠΌ Π•ΡΡ‚ΡŒ CSV-Ρ„Π°ΠΉΠ» [netflix\_titles.csv](https://www.kaggle.com/shivamb/netflix-shows), ΠΈ Python-script, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт количСство записСй Π² Π½Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² Π±Π°Π½Π΄Π» с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π€Π°ΠΉΠ» Python-скрипта Π½Π°Π·ΠΎΠ²Π΅ΠΌ просто simple1.py. [ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Use a different Browser]() ``` ``` Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ исполняСмый Ρ„Π°ΠΉΠ» с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅. ``` pyinstaller --add-data "netflix_titles.csv;." simple1.py ``` ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `--add-data` позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°Π½Π΄Π»Π΅ с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Бинтаксис add-data: - add-data \<source;destination\> β€” Windows. - add-data \<source:destination\> β€” Linux. МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ добавляСтся Π² ΠΏΠ°ΠΏΠΊΡƒ DIST вмСстС с исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. ![Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20598%20129'%3E%3C/svg%3E) ![Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ](https://pythonru.com/wp-content/uploads/2021/03/dobavlenie-fajlov-s-dannymi.png) Π’Π°ΠΊΠΆΠ΅, ΠΎΡ‚ΠΊΡ€Ρ‹Π² spec-Ρ„Π°ΠΉΠ», ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» datas, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ указываСтся, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» netflix\_titles.csv копируСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. ``` ... a = Analysis(['simple1.py'], pathex=['E:\\myProject\\pyinstaller-tutorial'], binaries=[], datas=[('netflix_titles.csv', '.')], ... ``` Запустим Ρ„Π°ΠΉΠ» simple1.exe, появится консоль с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ: `ВсСго Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ²: 7787`. ## Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile Если Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `--onefile`, Ρ‚ΠΎ PyInstaller распаковываСт всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΡƒ TEMP, выполняСт скрипт ΠΈ удаляСт TEMP. Если вмСстС с add-data ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ onefile, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ. ΠŸΡƒΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ мСняСтся ΠΈ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Β«\_MEIxxxxxx-folderΒ». [ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Use a different Browser]() ``` ``` Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ для чтСния ΠΏΠ°ΠΏΠΊΠΈ TEMP ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ exe-Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ onefile ΠΈ add-data. ``` pyinstaller --onefile --add-data "netflix_titles.csv;." simple1.py ``` ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ создания Ρ„Π°ΠΉΠ» simple1.exe появится Π² ΠΏΠ°ΠΏΠΊΠ΅ DIST. МоТно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки, связанной с отсутствиСм Ρ„Π°ΠΉΠ»Π°. ![Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20271%2099'%3E%3C/svg%3E) ![Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile](https://pythonru.com/wp-content/uploads/2021/03/dobavlenie-fajlov-s-dannymi-i-parametr-onefile.png) ### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hidden Imports Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ всС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ Python-скрипту. Иногда PyInstaller ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ динамичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня, возвращая ΠΎΡˆΠΈΠ±ΠΊΡƒ `ImportError: No module named`… Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ошибки Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² hidden-import. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ os, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: ``` pyinstaller --onefile --add-data "netflix_titles.csv;." β€” hidden-import "os" simple1.py ``` ## Π€Π°ΠΉΠ» spec Π€Π°ΠΉΠ» spec β€” это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ PyInstaller создаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС скрипта Python вмСстС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ запускС. PyInstaller считываСт содСрТимоС Ρ„Π°ΠΉΠ»Π° для создания исполняСмого Ρ„Π°ΠΉΠ»Π°, опрСдСляя всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ для Π½Π΅Π³ΠΎ. Π€Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .spec сохраняСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· ниТСпСрСчислСнных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» спСцификации: - Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» с исполняСмым Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. - Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹: .dll ΠΈΠ»ΠΈ .so. - Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π΅ΡΡ‚ΡŒ скрипт simpleModel.py, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TensorFlow ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ вСрсии этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. [ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Use a different Browser]() ``` ``` ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ модСль с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller: ``` pyinstaller -F simpleModel.py ``` ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ компиляции запускаСм исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ``` ... File "site-packages\tensorflow_core\python_init_.py", line 49, in ImportError: cannot import name 'pywrap_tensorflow' from 'tensorflow_core.python' ``` Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² Ρ„Π°ΠΉΠ» spec. Одно ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» spec. ``` $ pyi-makespec simpleModel.py -F wrote E:\pyinstaller-tutorial\simpleModel.spec now run pyinstaller.py to build the executable ``` Команда pyi-makespec создаСт spec-Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, содСрТащий всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π€Π°ΠΉΠ» simpleModel.spec создаСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Ρ‹Π» использован ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `--onefile`, Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π» exe. ``` ... exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='simpleModel', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True ) ``` Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ onedir, Ρ‚ΠΎ вмСстС с exe-Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ€Π°Π·Π΄Π΅Π» collect. МоТно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ simpleModel.spec ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст для создания Ρ…ΡƒΠΊΠΎΠ². ``` # -*- mode: python ; coding: utf-8 -*- block_cipher = None import os spec_root = os.path.realpath(SPECPATH) options = [] from PyInstaller.utils.hooks import collect_submodules, collect_data_files tf_hidden_imports = collect_submodules('tensorflow_core') tf_datas = collect_data_files('tensorflow_core', subdir=None, include_py_files=True) a = Analysis(['simpleModel.py'], pathex=['E:\\myProject\\pyinstaller-tutorial'], binaries=[], datas=tf_datas + [], hiddenimports=tf_hidden_imports + [], hookspath=[], ... ``` Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ…ΡƒΠΊΠΈ ΠΈ добавляСм ΠΈΡ… Π² hidden imports ΠΈ Ρ€Π°Π·Π΄Π΅Π» Π΄Π°Π½Π½Ρ‹Ρ…. ## Π₯ΡƒΠΊΠΈ > Π€Π°ΠΉΠ»Ρ‹ Ρ…ΡƒΠΊΠΎΠ² Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ PyInstaller ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ трСбования, ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° своих зависимостСй, Π½ΠΎ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ TensorFlow, сущСствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. PyInstaller Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠ· `PyInstaller.utils.hooks` ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ модСль послС обновлСния Ρ„Π°ΠΉΠ»Π° simpleModel.spec. ``` pyinstaller simpleModel.spec ``` Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ TensorFlow. ## Π’Ρ‹Π²ΠΎΠ΄: PyInstaller ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² создания простых ΠΈ слоТных исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Python-скриптов: - Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Π±Π°Π½Π΄Π» всС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `--add-data`. - Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ зависимыС Π΄Π°Π½Π½Ρ‹Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `--onefile` ΠΈΠ»ΠΈ `--onedir` соотвСтствСнно. - ДинамичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `hidden-imports`. - Π€Π°ΠΉΠ» spec позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ скрытых ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…ΡƒΠΊΠΎΠ². [Facebook](https://www.facebook.com/sharer.php?u=https%3A%2F%2Fpythonru.com%2Fbiblioteki%2Fpyinstaller) [Telegram](https://telegram.me/share/url?url=https://pythonru.com/biblioteki/pyinstaller&text=%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20exe%20%D1%84%D0%B0%D0%B9%D0%BB%20%D0%B4%D0%BB%D1%8F%20Python%20%D0%BA%D0%BE%D0%B4%D0%B0%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20PyInstaller) [Twitter](https://twitter.com/intent/tweet?text=%D0%9A%D0%B0%D0%BA+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C+exe+%D1%84%D0%B0%D0%B9%D0%BB+%D0%B4%D0%BB%D1%8F+Python+%D0%BA%D0%BE%D0%B4%D0%B0+%D1%81+%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E+PyInstaller&url=https%3A%2F%2Fpythonru.com%2Fbiblioteki%2Fpyinstaller&via=PythonRu) [VK](https://vk.com/share.php?url=https://pythonru.com/biblioteki/pyinstaller) [WhatsApp](<whatsapp://send?text=Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ exe Ρ„Π°ΠΉΠ» для Python ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller %0A%0A https://pythonru.com/biblioteki/pyinstaller>) [Viber](<viber://forward?text=Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ exe Ρ„Π°ΠΉΠ» для Python ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller https://pythonru.com/biblioteki/pyinstaller>) Максим Π― создал этот Π±Π»ΠΎΠ³ Π² 2018 Π³ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΡ€ΠΎΠΊΠΈ Π½Π° русском. На сайтС ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ мноТСство статСй ΠΏΠΎ основам python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, ΡƒΡ€ΠΎΠΊΠΎΠ² для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Мои ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹: [ΠŸΠΎΡ‡Ρ‚Π°](mailto:admin@pythonru.com "ΠŸΠΎΡ‡Ρ‚Π°") Python Q <https://yandex.ru/q/loves/python> Online Python QCEO Pythonruadmin@pythonru.comhttps://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96\&d=mm\&r=gCEO PythonruPythonАлСксандрРСдактор<https://t.me/cashncarry><https://pythonru.com/><https://yandex.ru/q/profile/cashnc/>PythonRu.com ![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20272%2090'%3E%3C/svg%3E) ![](https://pythonru.com/wp-content/uploads/2018/11/pythonru-272x90.png) admin@pythonru.comAlex Zabrodin2018-10-26OnlinePython, Programming, HTML, CSS, JavaScript ![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201200%20675'%3E%3C/svg%3E) ![](https://pythonru.com/wp-content/uploads/2021/03/pyinstaller-kak-skompilirovat-python-skript-v-exe-fajl.png) #### Π‘Ρ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ [![Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Python](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Python](https://pythonru.com/wp-content/uploads/2021/08/maxresdefault-7-218x150.jpg)](https://pythonru.com/biblioteki/tsvetnoj-vyvod-teksta-v-python-colorama "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Python: Colorama") ### [Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Python: Colorama](https://pythonru.com/biblioteki/tsvetnoj-vyvod-teksta-v-python-colorama "Π¦Π²Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Python: Colorama") [![Руководство ΠΏΠΎ PySpark для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![Руководство ΠΏΠΎ PySpark для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](https://pythonru.com/wp-content/uploads/2021/06/rukovodstvo-po-pyspark-dlya-nachinayushih-218x150.png)](https://pythonru.com/biblioteki/pyspark-dlja-nachinajushhih "Руководство ΠΏΠΎ PySpark для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…") ### [Руководство ΠΏΠΎ PySpark для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](https://pythonru.com/biblioteki/pyspark-dlja-nachinajushhih "Руководство ΠΏΠΎ PySpark для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…") [![ПолноС руководство ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Gensim для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![ПолноС руководство ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Gensim для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](https://pythonru.com/wp-content/uploads/2021/05/polnoe-rukovodstvo-po-biblioteki-gensim-dlya-nachinayushih-218x150.png)](https://pythonru.com/biblioteki/gensim "ПолноС руководство ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Gensim для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…") ### [ПолноС руководство ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Gensim для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…](https://pythonru.com/biblioteki/gensim "ПолноС руководство ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Gensim для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…") [![CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQLAlchemy ORM](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQLAlchemy ORM](https://pythonru.com/wp-content/uploads/2021/05/crud-operacii-v-sqlalchemy-orm-218x150.png)](https://pythonru.com/biblioteki/crud-sqlalchemy-orm "CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQLAlchemy ORM") ### [CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQLAlchemy ORM](https://pythonru.com/biblioteki/crud-sqlalchemy-orm "CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² SQLAlchemy ORM") [![Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы Π² SQLAlchemy ORM](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы Π² SQLAlchemy ORM](https://pythonru.com/wp-content/uploads/2021/05/sozdanie-shemy-v-sqlalchemy-orm-218x150.png)](https://pythonru.com/biblioteki/shemy-v-sqlalchemy-orm "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы Π² SQLAlchemy ORM") ### [Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы Π² SQLAlchemy ORM](https://pythonru.com/biblioteki/shemy-v-sqlalchemy-orm "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы Π² SQLAlchemy ORM") [![CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLAlchemy Core](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20218%20150'%3E%3C/svg%3E)![CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLAlchemy Core](https://pythonru.com/wp-content/uploads/2021/04/crud-operacii-s-pomoshyu-sqlalchemy-core-218x150.png)](https://pythonru.com/biblioteki/crud-sqlalchemy-core "CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLAlchemy Core") ### [CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLAlchemy Core](https://pythonru.com/biblioteki/crud-sqlalchemy-core "CRUD-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQLAlchemy Core") #### Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ - [Установка PyInstaller](https://pythonru.com/biblioteki/pyinstaller#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-PyInstaller "Установка PyInstaller") - [Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ exe Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller](https://pythonru.com/biblioteki/pyinstaller#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-exe-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-PyInstaller "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ exe Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PyInstaller") - [Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ exe-Ρ„Π°ΠΉΠ»ΠΎΠΌ](https://pythonru.com/biblioteki/pyinstaller#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B1%D1%83%D0%B4%D1%83%D1%82-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F-exe-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%BC "Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ exe-Ρ„Π°ΠΉΠ»ΠΎΠΌ") - [Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile](https://pythonru.com/biblioteki/pyinstaller#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8-%D0%B8-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-onefile "Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ onefile") - [Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hidden Imports](https://pythonru.com/biblioteki/pyinstaller#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D1%8B-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-Hidden-Imports "Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Hidden Imports") - [Π€Π°ΠΉΠ» spec](https://pythonru.com/biblioteki/pyinstaller#%D0%A4%D0%B0%D0%B9%D0%BB-spec "Π€Π°ΠΉΠ» spec") - [Π₯ΡƒΠΊΠΈ](https://pythonru.com/biblioteki/pyinstaller#%D0%A5%D1%83%D0%BA%D0%B8 "Π₯ΡƒΠΊΠΈ") - [Π’Ρ‹Π²ΠΎΠ΄:](https://pythonru.com/biblioteki/pyinstaller#%D0%92%D1%8B%D0%B2%D0%BE%D0%B4 "Π’Ρ‹Π²ΠΎΠ΄:") #### НовоС Π² Π±Π»ΠΎΠ³Π΅ - [НахоТдСниС Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ числа с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python](https://pythonru.com/primery/nahozhdenie-delitelej-chisla-s-pomoshhju-python) - [Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python](https://pythonru.com/osnovy/ljambda-funkcii-i-anonimnye-funkcii-v-python) - [Когда стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ yield вмСсто return Π² Python](https://pythonru.com/osnovy/kogda-stoit-ispolzovat-yield-vmesto-return-v-python) - [Как ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ кубичСский ΠΊΠΎΡ€Π΅Π½ΡŒ Π² Python](https://pythonru.com/osnovy/kak-izvlech-kubicheskij-koren-v-python) - [О ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅](https://pythonru.com/o-proekte) - [ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ](https://pythonru.com/politika-konfidencialnosti) - [ΠŸΡ€Π°Π²ΠΎΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡΠΌ](https://pythonru.com/pravoobladateljam) - [ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹](https://pythonru.com/kontakty) - [Π₯остинг⇲](https://pythonru.com/go/reg-ru) Β© PythonRu 2018-2021 β€” ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠ³ ΠΎ Python
Readable Markdownnull
Shard133 (laksa)
Root Hash11148520142196069133
Unparsed URLcom,pythonru!/biblioteki/pyinstaller s443