Создание команд
Для создания команды helloworld изменим файл setup.py:
setup( ... entry_points={ 'console_scripts' 'helloworld = helloworld.core:print_message' } )
В параметре entry_points мы задаем словарь с «точками вызова» нашего приложения. Ключ console_scripts
задает список создаваемых исполняемых скриптов (в Windows это будут exe-файлы). В данном случае
мы указали создание исполняемого скрипта helloworld при вызове которого будет запускаться метод print_message
из модуля helloworld.core.
Переустановим модуль в наше окружение и проверим работу созданного скрипта (для этого прийдется активировать наше окружение):
$ ./env/bin/python setup.py install $ source ./env/bin/activate (env) $ helloworld Hello World! (env)
Декомпиляция программы на Python
s http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>tyle=»clear:both;»>
1. Извлеките файл .pyc из сгенерированного exe
Здесь есть много способов. , , Можно использоватьpyinstxtractor. , Вы также можете использовать официальный archive_viewer.py (скачать в конце статьи)
Я использую официальный archive_viewer.py здесь. ,
Приведенный здесь пример — это программа (написанная на python), отправленная неким братом. , , Интерфейс выглядит так
(1) Откройте cmd в том же каталоге, что и программа. , Выполнить python archive_viewer.py qiangke.exe (здесь указано название программы)
Здесь доступны четыре команды:
Здесь следует отметить, что основное внимание уделяется последней строке и строке, в которой отображается название программы. , , Затем введите команду
x (имя программы) Введите имя файла pyc, который будет создан после возврата каретки
Пока что , Первый шаг завершен. , ,
2. Декомпилировать файлы pyc
Поскольку у каждого файла pyc есть волшебная голова, pyinstaller удалит волшебную часть pyc, когда он генерирует exe, и его необходимо завершить самостоятельно во время декомпиляции. Для python2 необходимо дополнить 8 байтов, следующие 4 байта являются временными метками, а первые 4 байта являются скомпилированными версиями Python. ,
Конечно, здесь есть небольшая хитрость
Первые 4 байта можно получить через файл структуры
Таким образом, предыдущий \ x03 \ xf3 \ x0d \ x0a. , Более поздние временные метки также можно заменить на 00 00 00 00
Затем используйте редактор 010 или winhex, чтобы открыть файл pyc. , Добавьте восемь байтов и сохраните
3. Восстановить py файлы
(1) Вы можете использовать веб-сайт для прямой загрузки и восстановления. ,
(2) Используйте uncompyle. , ,
Decompile:
uncompyle6 -o .pyc имя файла
Описание:
-o может сопровождаться путем к файлу, который представляет местоположение вывода декомпилированного файла, «.» означает вывод в текущую папку
После успешной декомпиляции возвращается «# Успешно декомпилированный файл»
Вы можете использовать uncompyle6 —help, чтобы увидеть другие параметры
Сначала установите без пипса
Затем откройте консоль в том же каталоге
Тот же каталог сгенерирует qiangke.py
Инструмент:
Интеллектуальная рекомендация
1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…
Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…
package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…
Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …
тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …
Вам также может понравиться
D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…
Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…
calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…
Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…
Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …
Как выполняются python скрипты
Чтобы понять как происходит выполнение Python-скрипта можно рассмотреть следующий пример:
Копировать
Блок схема выполнения кода интерпретатором
Общая схема выполнения программы выглядит так: 1. Программа или файл с расширением .py компилируется, и из него генерируются байт-коды. Итоговый код имеет расширение .pyc или .pyo. Файлы с расширением .pyc автоматически создаются интерпретатором при импортировании кода, что оптимизирует будущие импорты этого модуля. Поэтому такие файлы создаются только из .py файлов, если они импортируются другим файлом или модулем с расширением .py. Файлы .pyo также создается интерпретатором при импорте модуля, но с указанием интерпретатору включения параметров оптимизации. Оптимизатор активируется добавлением флага «-O» при вызове интерпретатора Python: python -O Файлы .pyo меньше по размеру, благодаря алгоритмам оптимизации, применённым интерпретатором. Тип файла .pyd, в отличие от предыдущих, применим исключительно для ОС Windows. Эти файлы аналогичны подключаемым библиотекам DLL.
2. Генерируется бинарный файл. Он читается интерпретатором для выполнения инструкций. Опытные разработчики Python иногда читают байт-коды для лучшего понимания работы программы.
Как запускать python скрипты
Для запуска Python-скрипта с помощью командной строки необходимо сохранить программу в файл. Возьмем в качестве примера файл, который был сохранен как script.py. Сохранить его можно несколькими способами: — Создать Пайтон-скрипт из командной строки и сохранить его, — Создать Пайтон -скрипт с помощью текстового редактора или IDE (к примеру, PyCharm) и сохранить его. Просто создайте файл, запишите код и сохраните как «script.py» Сохранить программу в текстовом редакторе очень просто. Процесс ничем не отличается от сохранения простого текстового файла.
Как запускать скрипт в командной строке
Программы можно запускать с помощью команды Пайтон прямо в консоле. Для этого нужно удостовериться, что вы выбрали путь до него или уже находитесь в нужной папке. Для исполнения скрипта откройте консоль и введите python3 script.py. Код, который будет записан в файле script.py:
Копировать
Копировать
Использование import для запуска скриптов
Очень часто используется импорт скриптов. Фактически, Вы не встретите ни одной программы на Пайтон, не использующей импорты. Существует главный принцип программирования – DRY – don’t repeat yourself. Это означает что повторение одного и того же кода в разных местах – плохой подход к написанию кода. Именно для следования этому принципу создана модульность. Если Вы хотите многократно использовать небольшой кусок кода, Вам поможет разделение кода на функции. Если же речь идёт о больших фрагментах, то на помощь приходит модульность. Вот как можно импортировать script.py в другую программу.
Копировать
Копировать
Использование importlib для запуска кода
import_module() из importlib позволяет импортировать и использовать другие Python3-скрипты. Это работает очень просто. В скрипте main.py необходимо сделать следующее:
Копировать
И нет необходимости добавлять .py в import_module(). Если требуемый модуль находится в другой папке, то, при использовании importlib необходимо указывать относительный путь, например так:
Копировать
Запуск кода с помощью runpy
Модуль runpy находит и выполняет Питон-скрипт без импорта. Он также просто используется, ведь достаточно просто вызывать модуль run_module(). Вот как, например, выполнить script.py с помощью runpy.
Копировать
Запуск кода динамически
Рассмотрим функцию exec(), которая также используется для динамического выполнения скриптов. Вот как она помогает выполнять код «на лету» на примере строки.
Копировать
Использование IDLE
IDLE – это официальная интегрированная среда разработки, поставляемая вместе с интерпретатором Python.
Она позволяет работать в интерактивном режиме, писать и запускать скрипты. Кроме того, IDLE поддерживает подсветку синтаксиса и отладку.
Работа в интерактивном режиме не отличается от того, что было описано для командной строки Windows и терминала Linux. Программист пишет код, который сразу исполняется интерпретатором.
Запуск скрипта
Чтобы запустить скрипт в IDLE, сначала нужно открыть его с помощью «File – Open» или с помощью клавиш <Ctrl>+<O>. Затем его необходимо запустить с помощью «Run – Run Module» или с помощью клавиши <F5>.
При запуске скрипта можно указать пользовательский параметры, для этого используйте «Run – Run… Customized» или комбинация клавиш <Shift>+<F5>. В поле «Command Line Arguments for sys.argv» прописываются нужные аргументы.
Запуск скрипта из интерактивного режима
Иногда при работе в интерактивном режиме возникает необходимость проверить код какого-либо скрипта. Не обязательно использовать терминал или отдельно открывать скрипт в IDLE, его можно запустить прямо из интерактивного сеанса различными способами.
import
При импорте модуля в скрипт выполняется весь содержащийся в нём код. Если модуль содержит только объявления функций и классов и присвоение значений, программист ничего не увидит. Но если модуль выводит что-то на экран, работает с файлами, то это отобразится при импорте.
Таким образом можно импортировать модуль в интерактивном режиме, чтобы увидеть результаты его выполнения, однако сделать это можно только один раз, потому что при последующих импортах в пределах одного сеанса ничего не произойдет, так как при каждом новом импорте интерпретатор обращается к модулю, записанному в кэш, а не к реальному файлу.
Здесь импортировал библиотеку sys для того чтобы в пути прописать полный путь до моего модуля. Видно, что приветствие отображается только после первой попытки импорта моего модуля.
exec()
Оператор exec() сначала читает содержимое модуля, затем отправляет его в функцию, которая выполняет код.
Синтаксис выглядит так:
>>> exec(open('D:\\python\\world.py').read())
Использование PyInstaller ↑
Первый шаг — установить PyInstaller из PyPI. Это можно сделать, используя pip, как и для других пакетов Python:
$ pip install pyinstaller
pip установит зависимости PyInstaller вместе с новой командой: pyinstaller. PyInstaller можно импортировать в код Python и использовать в качестве библиотеки, но вы, скорее всего, будете использовать его только как инструмент командной строки.
Вы будете использовать интерфейс библиотеки, если будете создавать свои собственные .
Вы увеличите вероятность того, что по умолчанию PyInstaller создаст исполняемый файл, если у вас есть только чистые зависимости Python. Однако не стоит особо беспокоиться, если у вас более сложные зависимости от расширений C/C++.
PyInstaller поддерживает множество популярных пакетов, таких как NumPy, PyQt и Matplotlib, без каких-либо дополнительных действий с вашей стороны. Вы можете узнать больше о списке пакетов, которые PyInstaller официально поддерживает, обратившись к документации PyInstaller.
Не беспокойтесь, если некоторые из ваших зависимостей не указаны в официальной документации. Многие пакеты Python работают нормально. Фактически, PyInstaller достаточно популярен, поэтому во многих проектах есть объяснения, как заставить вещи работать с PyInstaller.
Одним словом, шансы на то, что ваш проект сработает «из коробки», высоки.
Чтобы попробовать создать исполняемый файл со всеми значениями по умолчанию, просто дайте PyInstaller имя вашего основного сценария точки входа.
Сначала в папку с вашей записью — укажите и передайте его в качестве аргумента команде pyinstaller, которая была добавлена в ваш PATH при установке PyInstaller.
Например, введите следующее после того, как вы cd в каталог программы чтения верхнего уровня, если вы подписаны на проект вместе с проектом чтения каналов:
$ pyinstaller cli.py
Не пугайтесь, если при создании исполняемого файла вы увидите много результатов. PyInstaller по умолчанию является подробным, и его можно увеличить для отладки, что вы увидите позже.
Отладка исполняемых файлов PyInstaller ↑
Как вы видели выше, вы можете столкнуться с проблемами при запуске исполняемого файла. В зависимости от сложности вашего проекта исправления могут быть такими простыми, как включение файлов данных, таких как пример программы чтения каналов. Однако иногда требуется больше методов отладки.
Ниже приведены несколько распространенных стратегий, которые не указаны в определенном порядке.Часто одна из этих стратегий или их комбинация приводит к прорыву в сложных сеансах отладки.
Используйте терминал
Сначала попробуйте запустить исполняемый файл из терминала, чтобы увидеть весь вывод.
Не забудьте удалить флаг -w build, чтобы увидеть весь стандартный вывод в окне консоли. Часто вы увидите исключения ImportError, если зависимость отсутствует.
Файлы отладки
Проверьте файл build/cli/warn-cli.txt на наличие проблем. PyInstaller создает множество выходных данных, чтобы помочь вам понять, что именно он создает. Копание в папке build/ — отличное место для начала.
Используйте режим распространения —onedir для создания папки распространения вместо одного исполняемого файла. Опять же, это режим по умолчанию. Сборка с помощью —onedir дает вам возможность проверить все включенные зависимости вместо того, чтобы все было скрыто в одном исполняемом файле.
—onedir полезен для отладки, но —onefile обычно легче понять пользователям. После отладки вы можете переключиться в режим —onefile, чтобы упростить распространение.
Дополнительные параметры интерфейса командной строки
PyInstaller также имеет параметры для управления объемом информации, печатаемой в процессе сборки. Перестройте исполняемый файл с параметром —log-level=DEBUG в PyInstaller и просмотрите вывод.
PyInstaller создаст много вывода при увеличении детализации с помощью —log-level=DEBUG. Полезно сохранить этот вывод в файл, к которому вы можете обратиться позже, вместо того, чтобы прокручивать его в Терминале. Для этого вы можете использовать функцию перенаправления вашей оболочки. Вот пример:
$ pyinstaller --log-level=DEBUG cli.py 2> build.txt
Используя указанную выше команду, вы получите файл build.txt, содержащий множество дополнительных сообщений DEBUG.
Вот пример того, как может выглядеть ваш файл build.txt:
67 INFO: PyInstaller: 3.4 67 INFO: Python: 3.6.6 73 INFO: Platform: Darwin-18.2.0-x86_64-i386-64bit 74 INFO: wrote /Users/realpython/pyinstaller/reader/cli.spec 74 DEBUG: Testing for UPX ... 77 INFO: UPX is not available. 78 DEBUG: script: /Users/realptyhon/pyinstaller/reader/cli.py 78 INFO: Extending PYTHONPATH with paths ['/Users/realpython/pyinstaller/reader', '/Users/realpython/pyinstaller/reader']
В этом файле будет много подробной информации о том, что было включено в вашу сборку, почему что-то не было включено и как был упакован исполняемый файл.
Вы также можете перестроить свой исполняемый файл с помощью параметра —debug в дополнение к параметру —log-level для получения дополнительной информации.
Дополнительные документы PyInstaller
PyInstaller GitHub Wiki содержит множество полезных ссылок и советов по отладке. В первую очередь это разделы о том, , и что делать, если что-то пойдет не так.
Помощь в обнаружении зависимостей
Наиболее частая проблема, с которой вы столкнетесь, — это исключения ImportError, если PyInstaller не может правильно определить все ваши зависимости. Как упоминалось ранее, это может произойти, если вы используете , импорт внутри функций или другие типы .
Многие из этих типов проблем можно решить с помощью —hidden-import параметр CLI PyInstaller. Это указывает PyInstaller включить модуль или пакет, даже если он не обнаруживает их автоматически. Это самый простой способ обойти множество магических действий динамического импорта в вашем приложении.
Другой способ обойти проблемы — файлы перехвата. Эти файлы содержат дополнительную информацию, которая поможет PyInstaller упаковать зависимость. Вы можете написать свои собственные хуки и указать PyInstaller использовать их с параметром CLI —additional-hooks-dir.
Файлы ловушек — это то, как сам PyInstaller работает внутри, поэтому вы можете найти множество примеров файлов ловушек в исходном коде PyInstaller.
Редактируем мета-информацию (setup.py)
Заполним файл описания README.rst:
Description =========== An example Hello World project.
Теперь отредактируем файл setup.py:
from setuptools import setup, find_packages from os.path import join, dirname setup( name='helloworld', version='1.0', packages=find_packages(), long_description=open(join(dirname(__file__), 'README.txt')).read(), )
Note
Убедитесь, что в вашей системе доступны setuptools, в противном
случае установите python-пакет distribute
Этих операций достаточно, чтобы собрать пакет дистрибьюции. Выполните команду
сборки:
$ python setup.py sdist
Создадим скрипт Python
Шаг №1 — откройте текстовый редактор.
Если вы находитесь на удаленном сервере, откройте свой любимый текстовый редактор. Для этого введите команду:
mcedit
Вы можете использовать любой текстовый редактор (vim, nano и т. д.). Но если вы хотите что-то более продвинутое, я настоятельно рекомендую Sublime Text 3.
Скопируйте и вставьте весь код из Jupyter Notebook в текстовый редактор:
Шаг №3 — Сохраните файл как файл .py!
Нажмите кнопку 10-Quit в правом нижнем углу (или Esc+0 на клавиатуре).
После чего mcedit спросит, хотите ли вы сохранить файл? Нажмите: Yes! Затем задайте имя новому текстовому файлу. Скрипты Python имеют собственное расширение: .py.
Нажмите . Теперь текстовый файл теперь стал скриптом Python.
Шаг № 4 — Снова откройте текстовый файл
Вернемся к редактированию файла, набрав команду:
mcedit demoscript.py
Теперь код выглядит более похожим на Python с различной подсветкой:
Это потому, что вы добавили расширение . В результате этого редактор mcedit распознал текстовый файл как скрипт Python.
Шаг № 5 — Добавьте Shebang!
Shebang — это строка кода, которую нужно поместить в самом начале скрипта. Его задача – сообщить ОС, что у вас есть исполняемый файл Python3.
Строка shebang для скриптов Python3 выглядит следующим образом:
#! / usr / bin / env python3
Добавленный Shebang
Если честно, ваш скрипт будет работать и без него. Несмотря на это, я предпочитаю добавлять Shebang по нескольким причинам:
- В среде разработки, в которой доступно сразу несколько версий Python, Shebang прояснит, какой интерпретатор должен выполнить скрипт.
- Когда один из ваших коллег откроет скрипт, он сразу увидит, на каком языке он написан.
Дополнительно: шаг № 6 — сделать скрипты на Python исполняемыми
После добавления Shebang, снова сохраните файл и попробуйте запустить скрипт, введя команду:
python3 demoscript.py
В некоторых случаях (в зависимости от конфигурации используемого сервера) вы получите ошибку прав доступа:
demoscript.py: Permission denied
В Python подобная ошибка прав доступа не возникает. Если вы не столкнулись с этой проблемой, просто перейдите к шагу № 7.
Если у вас возникла ошибка прав доступа, в командной строке введите этот код:
sudo chmod 777 demoscript.py
Шаг №7 — запустите скрипт на Python!
Запустите скрипт, введя команду:
python3 demoscript.py
Это означает, что ваш скрипт на Python запущен… Но вы не видите никакого результата на экране.
Шаг № 8 — почему я ничего не вижу?
В большинстве случаев, когда вы конвертируете проект Jupyter Notebook в скрипт Python, вы не увидите на экране ничего. Это потому, что последняя строка вашего кода была такой:
Вернитесь к своему скрипту и измените последнюю строку на эту:
print(zoo)
Нажмите 10-Quit и Save.
Перезапустите скрипт, введя для этого команду:
python3 demoscript.py
Шаг № 9 — Вы создали скрипт на Python
Победа!
Вы создали скрипт на Python, и он работает. Но вы все равно захотите использовать Jupyter Notebook. Так как он является идеальным инструментом для тестирования и настройки процессов. Поэтому:
- Я создаю прототип проекта на Python в Jupyter Notebook. Затем создаю код и выясняю, какие шаги необходимы.
- Затем удаляю ненужные фрагменты кода и импортированные пакеты, сортирую задачи Python в порядке их выполнения.
- Добавляю комментарии к коду.
- Перемещаю все в текстовый редактор (Sublime Text или mcedit) и создаю скрипт Python, который можно автоматизировать.
Виртуальное окружение
Virtualenv — пакет применяемый для создания изолированного python-окружения. Используем
его для тестирования нашего проекта.
Создадим окружение env:
$ virtualenv env
Команда создаст директорию env внутри нашего проекта и установит туда python, pip и distribute.
Произведем в него установку нашего проекта.
$ ./env/bin/python setup.py install running install running bdist_egg running egg_info ... Processing dependencies for helloworld==1.0 Finished processing dependencies for helloworld==1.0
И протестируем его работоспособность:
$ ./env/bin/python >>> import helloworld.core as hw >>> hw.get_message() 'Hello World!' >>> hw.print_message() Hello World!
Как установить PIP на Linux
Если у вас дистрибутив Linux с уже установленным на нем Python, то скорее всего возможно установить PIP, используя системный пакетный менеджер. Это более удачный способ, потому что системные версии Python не слишком хорошо работают со скриптом get-pip.py, используемым в Windows и Mac.
Advanced Package Tool (Python 2.x)
Advanced Package Tool (Python 3.x)
pacman Package Manager (Python 2.x)
pacman Package Manager (Python 3.x)
Yum Package Manager (Python 2.x)
Yum Package Manager (Python 3.x)
Dandified Yum (Python 2.x)
Dandified Yum (Python 3.x)
Zypper Package Manager (Python 2.x)
Zypper Package Manager (Python 3.x)
Работа с версиями
Номер версии важная часть любого проекта. От него зависит обновление пакетов
и разрешение зависимостей. В примере выше мы указали номер версии 1.0 в файле setup.py.
Более правильное решение перенести его в файл helloworld/__init__.py чтобы сделать доступным
в python-коде. По существующим соглашения для хранения номера версии в модуле, используется
переменная __version__.
helloworld/__init__.py`:
__version__ = '1.0'
Изменим файл setup.py, чтобы нам не приходилось редактировать номер версии в двух местах:
... import helloworld setup( name='helloworld', version=helloworld.__version__, ...
Существует множество систем наименования версий в python обычно рекомендуется использовать PEP386.
Можно представить, что обозначение версии состоит из номера мажорного, минорного релизов
(номера багфикса при необходимости), разделенных точками. В последней части версии
разрешается использовать буквы латинского алфавита. Примеры из официальной документации:
Копаемся в артефактах PyInstaller ↑
PyInstaller сложен внутри и при работе создаёт массу информации
Итак, важно знать, на чем сосредоточиться в первую очередь. А именно исполняемый файл, который вы можете распространять среди пользователей, и потенциальную отладочную информацию
По умолчанию команда pyinstaller создает несколько интересных моментов:
- Файл спецификации *.spec
- Папка сборки Build
- Папка дистрибутива Dist
Файл спецификаций
По умолчанию файл спецификации будет назван в честь вашего сценария командной строки. Продолжая наш предыдущий пример, вы увидите файл с именем cli.spec. Вот как выглядит файл спецификации по умолчанию после запуска PyInstaller в файле cli.py:
# -*- mode: python -*- block_cipher = None a = Analysis(, pathex=['/Users/realpython/pyinstaller/reader'], binaries=[], datas=[], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, [], exclude_binaries=True, name='cli', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=True ) coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='cli')
Этот файл будет автоматически создан командой pyinstaller. У вашей версии будут разные пути, но большинство должно быть одинаковым.
Не волнуйтесь, вам не нужно понимать приведенный выше код, чтобы эффективно использовать PyInstaller!
Этот файл можно изменить и повторно использовать для создания исполняемых файлов позже. Вы можете сделать будущие сборки немного быстрее, предоставив этот файл спецификации вместо сценария точки входа для команды pyinstaller.
Есть несколько конкретных вариантов . Однако для простых проектов вам не нужно беспокоиться об этих деталях, если вы не хотите сильно настраивать способ сборки вашего проекта.
Папка сборки Build
Папка build — это то место, куда PyInstaller помещает большую часть метаданных и внутренней бухгалтерии для создания вашего исполняемого файла. Содержимое по умолчанию будет выглядеть примерно так:
| └── cli/ ├── Analysis-00.toc ├── base_library.zip ├── COLLECT-00.toc ├── EXE-00.toc ├── PKG-00.pkg ├── PKG-00.toc ├── PYZ-00.pyz ├── PYZ-00.toc ├── warn-cli.txt └── xref-cli.html
Папка сборки может быть полезна для отладки, но, если у вас нет проблем, эту папку можно в значительной степени игнорировать. Вы узнаете больше об отладке позже в этом уроке.
Папка Dist
После сборки вы получите папку dist, подобную следующей:
dist/ | └── cli/ └── cli
Папка dist содержит последний вариант приложения, который вы хотите отправить своим пользователям. Внутри папки dist есть папка, названная в честь вашей точки входа. Итак, в этом примере у вас будет папка dist/cli, содержащая все зависимости и исполняемый файл для нашего приложения. Исполняемый файл для запуска — dist/cli/cli или dist/cli/cli.exe, если вы работаете в Windows.
Вы также найдете множество файлов с расширениями .so, .pyd и .dll в зависимости от вашей операционной системы. Это общие библиотеки, которые представляют зависимости вашего проекта, которые PyInstaller создал и собрал.
Вы захотите распространить всю папку dist/cli, но вы можете переименовать cli во все, что вам подходит.
На этом этапе вы можете попробовать запустить исполняемый файл dist/cli/cli.exe, если вы следуете примеру программы чтения каналов.
Вы заметите, что запуск исполняемого файла приводит к ошибкам, в которых упоминается файл version.txt. Это связано с тем, что программе чтения каналов и ее зависимостям требуются некоторые дополнительные файлы данных, о которых PyInstaller не знает. Чтобы исправить это, вам нужно сообщить PyInstaller, что требуется version.txt, о чем вы узнаете при тестировании нового исполняемого файла.
Как установить Python в Windows
Для Python 3.x также много активно поддерживаемых веток:
- 3.9
- 3.8
- 3.7
- 3.6
- 3.5
Последней стабильной версией на момент написания является Python 3.8.x.
Помните, что Python не будет работать на Windows XP или более ранних.
Кстати, ведь Python есть и в магазине приложений Windows,
где у него одна звезда (из пяти) и один отзыв (что ничего не работает):
Поэтому мы выполним установку с помощью официального установщика — это совсем просто.
Для скачивания установочного файла, перейдите на страницу загрузки установочных файлов для Windows: https://www.python.org/downloads/windows/
Выберите последний выпуск Python 3, на скриншоте это Python 3.8.0.
Пролистните страницу вниз и найдите «Windows x86-64 executable installer»:
Запустите скаченный файл:
Во-первых, поставьте галочку «Add Python 3.8 to PATH». Это нужно для того, что когда вы будете запускать скрипт на Python, вам не нужно будет указывать полный путь до интерпретатора.
Во-вторых, я рекомендую изменить папку, куда будет выполнена установка. Для этого кликните «Customize installation».
В этом окне ничего не меняем, главное убедитесь, что стоит галочка напротив pip:
В этом окне убедитесь, что стоит галочка «Add Python to environment variables» и поменяйте папку установки на «C:\Python\Python38»:
Нажмите кнопку «Install»:
И… всё готово! Согласитесь, это было реально просто.
У меня в Windows уже включена поддержка путей файлов длиной более 260 символов, но если у вас ещё это не сделано, то установщик в конце предложит это — чтобы это сделать, нажмите «Disable path length limit». Эта настройки ни на что плохо не влияет. Но нужно помнить, что старые программы по-прежнему могут быть неспособны работать с файлами, пути которых имеют более 260 символов.
Смотрите подробности в статьях:
- Как в Windows 10 включить поддержку пути к файлам длиной более 260 символов
- Существует ли предел длины имени файлов в Windows
Для проверки, откройте командную строку: нажмите Win+x и выберите «Windows PowerShell»:
Откроется PowerShell. Если вам привычнее обычная командная строка Windows (CMD), то нажмите Win+r и введите
cmd
В любом из открывшихся окон введите:
python --version
Должна появится версия Python, например:
Python 3.8.0
❖ Способ 4: Использование виртуальных сред
Другой подход к запуску различных версий Python в Windows – это установить Виртуальский и создать две независимые виртуальные среды для соответствующих версий Python.
➥ Синтаксис:
virtualenv -p C: \ \ python.exe \
➥ Пример:
C:\Users\DELL\Desktop>virtualenv -p C:\Python27\python.exe c:\venvs\2.7 C:\Users\DELL\Desktop>virtualenv -p C:\Users\DELL\AppData\Local\Programs\Python\Python38\python.exe c:\venvs\3.8
Как только виртуальные среды были созданы, вы можете активировать Конкретная среда для использования этой версии, как показано ниже:
Деактивировать это использовать команду: