Модуль py_compile предоставляет функцию для генерации файла байт-кода из исходного файла, а также другую функцию, используемую, когда исходный файл модуля вызывается как сценарий.
Хотя эта функция нужна нечасто, она может быть полезна при установке модулей для совместного использования, особенно если у некоторых пользователей может не быть разрешения на запись файлов кэша байт-кода в каталог, содержащий исходный код.
exception py_compile. PyCompileError ¶
Исключение, возникающее при возникновении ошибки при попытке компиляции файла.
py_compile. compile ( file , cfile = None , dfile = None , doraise = False , optimize = — 1 , invalidation_mode = PycInvalidationMode.TIMESTAMP , quiet = 0 ) ¶
Скомпилируйте исходный файл в байт-код и выпишите кэш-файл байт-кода. Исходный код загружается из файла с именем file. Байт-код записывается в cfile, который по умолчанию имеет путь PEP 3147/ PEP 488, заканчивающийся на .pyc . Например, если file равен /foo/bar/baz.py , то cfile по умолчанию будет равен /foo/bar/__pycache__/baz.cpython-32.pyc для Python 3.2.
Как скомпилировать программы на Python
Если указан dfile, то он используется вместо file в качестве имени исходного файла, из которого берутся исходные строки для отображения в трассировках исключений. Если doraise равно true, то при возникновении ошибки при компиляции file выдается сообщение PyCompileError . Если doraise равно false (по умолчанию), строка ошибки записывается в sys.stderr , но исключение не выдается. Эта функция возвращает путь к байт-компилированному файлу, т.е. то значение cfile, которое было использовано.
Аргументы doraise и quiet определяют, как обрабатываются ошибки при компиляции файла. Если quiet равен 0 или 1, а doraise ложен, то включается поведение по умолчанию: строка ошибки записывается в sys.stderr , а функция возвращает None вместо пути. Если doraise равно true, вместо этого выдается PyCompileError . Однако если quiet равно 2, сообщение не записывается, и doraise не имеет никакого эффекта.
Если путь, которым становится cfile (явно указанный или вычисленный), является симлинком или нерегулярным файлом, будет выдано предупреждение FileExistsError . Это предупреждение о том, что импорт превратит эти пути в обычные файлы, если ему будет разрешено записывать байт-компилированные файлы по этим путям. Это побочный эффект того, что импорт использует переименование файлов для размещения конечного байт-компилированного файла на месте, чтобы предотвратить проблемы одновременной записи файлов.
optimize управляет уровнем оптимизации и передается встроенной функции compile() . По умолчанию -1 выбирает уровень оптимизации текущего интерпретатора.
invalidation_mode должен быть членом перечисления PycInvalidationMode и управляет тем, как сгенерированный кэш байткода аннулируется во время выполнения. По умолчанию используется значение PycInvalidationMode.CHECKED_HASH , если установлена переменная окружения SOURCE_DATE_EPOCH , в противном случае используется значение PycInvalidationMode.TIMESTAMP .
Как скомпилировать python в exe | Полноценная компиляция с помощью NUITKA
Изменено в версии 3.2: Изменено значение по умолчанию cfile на PEP 3147-совместимое. Предыдущее значение по умолчанию было file + ‘c’ ( ‘o’ , если была включена оптимизация). Также добавлен параметр optimize.
Изменено в версии 3.4: Изменен код для использования importlib для записи файлов кэша байт-кода. Это означает, что семантика создания/записи файлов теперь соответствует тому, что делает importlib , например, разрешения, семантика записи и перемещения и т.д. Также добавлена оговорка, что FileExistsError возникает, если cfile является симлинком или нерегулярным файлом.
Изменено в версии 3.7: Параметр invalidation_mode был добавлен, как указано в PEP 552. Если установлена переменная окружения SOURCE_DATE_EPOCH , invalidation_mode будет принудительно установлен в PycInvalidationMode.CHECKED_HASH .
Изменено в версии 3.7.2: Переменная окружения SOURCE_DATE_EPOCH больше не переопределяет значение аргумента invalidation_mode, а определяет его значение по умолчанию.
Изменено в версии 3.8: Был добавлен параметр quiet.
class py_compile. PycInvalidationMode ¶
Перечисление возможных методов, которые интерпретатор может использовать для определения соответствия файла байткода исходному файлу. Файл .pyc указывает желаемый режим аннулирования в своем заголовке. Смотрите Аннулирование кэшированного байткода для получения дополнительной информации о том, как Python аннулирует .pyc файлы во время выполнения.
Добавлено в версии 3.7.
Файл .pyc включает метку времени и размер исходного файла, которые Python будет сравнивать с метаданными исходного файла во время выполнения, чтобы определить, нужно ли регенерировать файл .pyc .
Файл .pyc включает хэш содержимого исходного файла, который Python будет сравнивать с исходным файлом во время выполнения, чтобы определить, нужно ли регенерировать файл .pyc .
Как и CHECKED_HASH , файл .pyc включает хэш содержимого исходного файла. Однако во время выполнения Python будет полагать, что файл .pyc является актуальным, и не будет проверять .pyc на соответствие исходному файлу.
Эта опция полезна, когда .pycs поддерживается в актуальном состоянии какой-либо внешней по отношению к Python системой, например, системой сборки.
Интерфейс командной строки¶
Этот модуль может быть вызван как сценарий для компиляции нескольких исходных файлов. Файлы, названные в filenames, компилируются, а полученный байткод кэшируется обычным образом. Эта программа не ищет исходные файлы в структуре каталогов; она компилирует только файлы с явными именами. Статус выхода ненулевой, если один из файлов не удалось скомпилировать.
Позиционные аргументы — это файлы для компиляции. Если — является единственным параметром, список файлов берется из стандартного ввода.
Подавление вывода ошибок.
Изменено в версии 3.2: Добавлена поддержка — .
Изменено в версии 3.10: Добавлена поддержка -q .
Утилиты для компиляции всех исходных файлов Python в дереве каталогов.
Источник: django.fun
Как скомпилировать python в exe файл в visual studio
Говорят, что у Visual Studio Code (VS Code) есть много преимуществ. Мне он действительно нравится после того, как я это понял. Мне он нравится в основном по трем причинам. Одна из них — это то, что VS Code — это открытый код и кроссплатформенность. Другая — потому что его интерфейс очень крутой.
Помимо основных требований к коду, конечно, есть еще и сильное любопытство.
Используйте VScode, чтобы написать первую программу Python one.py и упаковать ее в файл .exe.
Версия программы, использованная в демонстрации: python36, VScode1.27.1, pyinstaller3.4.
Один,Скачать VS CodeИ установить
Во-вторых, настройте среду Python
Щелкните значок питания в нижнем левом углу, выберите расширения во всплывающем меню, введите «Python» в поле поиска в левом верхнем углу, вы увидите множество подключаемых модулей Python, выберите установку своих любимых подключаемых модулей Python (с двумя изображениями).
Рисунок 1 Шаг 1 установки подключаемого модуля Python
Рисунок 2 Шаг 2 установки Python
Кроме того, убедитесь, что каталог установки Python должен быть добавлен в подключаемый модуль переменных системной среды для нормальной работы. Компьютер-> Свойства-> Расширенные настройки системы-> Переменные среды, найдите «Путь» в системных переменных и дважды щелкните, чтобы открыть его, добавьте путь установки Python после «значения переменной», а затем сохраните его. После завершения добавления Win + R введите python, чтобы проверить успешность добавления. (С двумя изображениями, показывающими основные шаги)
Рисунок 3 Установка переменных среды системы Python
Рисунок 4 Проверьте, успешно ли добавлена переменная среды Python (обычный интерфейс)
В-третьих, используйте VS Code для написания первой программы на Python.
Следующий контент будет написан на другом компьютере, а стиль скриншота несовместим (сейчас используется компьютер с системой Windows 10, а до Windows 7), пожалуйста, поймите!
1. Создайте папку для хранения исходного кода проекта Я создал каталог VScode / one на диске e.
2. Щелкните «Открыть папку» на странице приветствия и выберите только что созданный каталог e: / VScode / one.
Рисунок 5 Эффект отображения открытия каталога e: VScode one
3. Щелкните «Новый файл» в месте, указанном на рисунке ниже, введите имя файла «one.py» в поле ввода и дважды щелкните файл «one.py», чтобы увидеть область написания кода.
Рис. 6. Новый файл one.py
Рисунок 7 Откройте файл one.py
4. Напишите пример кода следующим образом:
5. Нажмите F5, чтобы запустить код, и результат работы показан на рисунке ниже:
Рисунок 8 Эффект выполнения кода
Если необходимые подключаемые модули Python не были установлены правильно ранее, при запуске кода могут возникнуть ошибки. VScode автоматически находит правильные подключаемые модули в соответствии с типом файла .py и предлагает их установить (обычно в правом нижнем углу экрана), нажмите «установить», чтобы установить Затем, после установки подключаемого модуля в соответствии с запросом, вы можете выполнить код.
В-четвертых, упакуйте файл Python в программу .exe.
Используйте pip для установки pyinstaller, а затем используйте pyinstaller для упаковки программы python.
How to compile .py to .exe in Microsoft Visual Studio Community 2017?
How do you compile .py to .exe in Microsoft Visual Studio 2017? I have looked through the menus but can not find what I’m looking for?
2 Answers 2
Hey Tom!
You can compile it, but only into a .pyc file which is a compiled python file, which I do not know what it does. I personally chose to installed pyinstaller, and ran pyinstaller [filename].py from the command line. It is easier than py2exe.
Python is usually not compiled but executed using the python interpreter.
You should only ever compile it to an .exe if you want to execute it on windows without having to install python first. That can be done by using pyinstaller or py2exe (in case you use python 2).
-
The Overflow Blog
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Компилируем код Python в файл exe
Код, написанный на Python, позволяет решать много прикладных задач: автоматизация отчетности, алгоритмы поиска, анализа и пр. Однако не у всех потенциальных пользователей может быть установлен сам Python и тем более не все являются экспертами в программировании. Выручить может программа, которая будет отрабатывать написанный вами код без установки библиотек Python и необходимой оболочки. Одним из таких решений может быть компиляция кода Python а файл exe. Дальше простым языком мы постараемся объяснить, как его скомпилировать и какие есть нюансы.
Для начала Вам необходимо скачать компилятор pyinstaller, для чего вам понадобится команда:
Далее ваш код в формате. py необходимо разместить в системную папку Scripts.
Путь к этой папке обычно выглядит так:
Если Вы инсталлировали Python в другое место, соответственно ищите папку там.
Далее приступаем собственно к компиляции, для чего: выделяем путь к папке Scripts в окне браузера, вместо него набираем команду cmd и жмем Enter.
Похожие публикации:
- Your android sdk location contains non ascii characters что делать
- Как запустить фотошоп от имени администратора
- Какое наибольшее число последовательных натуральных чисел
- Считая что 25 ваттная лампочка
Источник: gshimki.ru
Как PyPy ускоряет Python до уровня C?
Python — идеальный инструмент для того, чтобы мы перестали беспокоиться о разных рутинных вещах, вроде шаблонного кода, и сосредоточились на реализации идеи.
Однако стоит обсудить существенный недостаток: выполнение кода на стандартном интерпретаторе Python потребует больше времени, чем компилируемые языки, такие как C или C++. И что же делать, когда идея проверена, прототип успешно реализован на Python, и хочется наконец-то превратить его в готовый, быстрый, производительный инструмент? Популярное решение — проделать двойную работу, вручную преобразовывая Python-код в код на C. Но разве не было бы здорово, если бы прототип смог работать достаточно быстро на Python? Все время, потраченное на двойную реализацию, можно было бы направить на создание чего-то более значимого и интересного.
К счастью, существует PyPy — быстрая альтернатива стандартному интерпретатору Python.
Чтобы проиллюстрировать, насколько PyPy способен ускорить выполнение кода, можно запустить стандартный интерпретатор Python вместе с PyPy:
import time from termcolor import colored start = time.time() number = 0 for i in range(100000000): number += i print(colored(«ЗАВЕРШЕНО», «зеленый»)) print(f»Время выполнения: сек»)
Скрипт складывает все целые числа от 0 до 100 000 000 в цикле и после завершения работы выводит на экран сообщение с временем выполнения.
Хотя иллюстрирующий пример нельзя назвать научной оценкой, его результат все равно поражает. По сравнению со стандартным интерпретатором Python, которому требуется около 10 секунд, PyPy завершает выполнение примерно через 0,22 секунды! Также обратите внимание, что свой Python-код можно запустить с помощью PyPy без каких-либо изменений. Результат становится еще более впечатляющим, если сравнить его с языком программирования C, ведь эквивалентная реализация на C выполняется 0,32 секунды. Получается, что в некоторых случаях PyPy может превзойти C по скорости выполнения!
PyPy менее эффективен в случае, если программа и так работает быстро, или когда она тратит большую часть времени на ожидание данных (обращение к библиотекам на других языках, ожидание ответа от веб-серверов). В случае же, когда программа полностью написана на Python и работает медленно, то PyPy способен сотворить чудо.
Почему PyPy так быстро выполняет код?
Секрет увеличения производительности PyPy заключается в компиляции “точно в срок” (just-in-time), сокращенно JIT-компиляция.
Рассмотрим компиляцию подробнее.
Опережающая Компиляция (Ahead-Of-Time Compilation)
Такие языки программирования, как C, C++, Swift, Haskell, Rust и многие другие, компилируются заранее — они компилируемые. Это означает, что после написания кода вы нажимаете кнопку, и компилятор преобразует исходный код в машиночитаемый код, адаптированный под одну конкретную архитектуру компьютера: для выполнения программы исходный код больше не потребуется.
Интерпретация Языка
Python, JavaScript, PHP и подобные языки используют другой подход. Они интерпретируются. По сравнению с преобразованием исходного кода в машинный код, исходный код остается нетронутым. Каждый раз при запуске программы интерпретатор просматривает код построчно и выполняет его.
В случае с JavaScript интерпретатор встроен в каждый веб-браузер, а интерпретатор Python необходимо устанавливать отдельно. Стандартный интерпретатор Python с веб-сайта python.org называется CPython. Однако важно различать Python как язык и CPython как программу-интерпретатор, которая выполняет код на языке Python. Это связано с тем, что существуют совершенно разные инструменты для выполнения кода, написанного на Python. Именно здесь в дело вступает PyPy.
Компиляция точно в срок (Just-In-Time Compilation)
PyPy — это альтернативная реализация Python, использующая компиляцию “точно в срок”. Принцип работы таков: PyPy запускается как интерпретатор, выполняющий код Python напрямую из исходных файлов. Однако вместо того, чтобы выполнять код построчно, PyPy компилирует части кода в машинный код непосредственно перед его выполнением, так сказать, вовремя.
В этом смысле JIT-компиляцию можно назвать сочетанием производительности опережающей компиляции с гибкостью и кроссплатформенностью интерпретируемых языков.
Так в чем же польза PyPy?
Теперь, когда стало понятно, как же PyPy достигает своего поразительного прироста производительности, хочется сразу использовать его. PyPy доступен на сайте pypy.org и легко устанавливается. Помимо самого инструмента, на сайте можно ознакомиться со множеством советов и рекомендаций по тонкой настройке Python-программы для еще большего увеличения производительности.
Поскольку PyPy — это альтернативная реализация интерпретатора Python, то в большинстве случаев он просто работает “из коробки” без каких-либо изменений вашего проекта. Он полностью совместим с веб-фреймворком Django, пакетом для научных вычислений Numpy и множеством других пакетов. PyPy сэкономит вам бесчисленное количество часов, позволяя не переписывать свои программы на Python ради скорости выполнения, и его уж точно нельзя упустить из своего набора инструментов для разработки программного обеспечения.
- Python/C API — ускорение Python при помощи кода на C
- Новинка Python 3.10: оператор переключения Structural pattern matching
- List Comprehensions в Python за 5 минут
Источник: nuancesprog.ru