Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как создать файл с расширением py


Как создать исполняемые файлы для Python (от .PY до .EXE)

Сегодня мы увидим, как создавать исполняемые файлы, начиная с наших скриптов Python, чтобы мы могли легко запускать и делиться нашими программами, так как после того, как мы создадим эти приложения, которые мы создадим из наших файлов, будет достаточно щелкнуть по ним, чтобы запустить их, без необходимости установки в системе интерпретатора Python или другие зависимости!

Например, если у вас есть друзья или коллеги, с которыми вы хотите поделиться своей программой, или если вы хотите создать исполняемый файл, чтобы брать его с собой, не беспокоясь о настройке системы каждый раз, когда вам придется ее использовать, эта статья – то, чего вы ждали!

Для этого мы будем использовать инструмент под названием pyinstaller.

Pyinstaller отлично работает как в Windows, так и в Linux и Mac OS, и поэтому все команды, которые мы покажем вам в этой статье, будут такими же, что и вам, независимо от того, в какой операционной системе вы находитесь.

Также очень важно помнить, что pyinstaller не является кросс-компилятором, или, как многие из вас уже предполагали, вы можете создавать исполняемые файлы только для используемой вами операционной системы.

Если вы хотите создать файл .exe, например, а затем исполняемый файл для Windows, вы можете сделать это только из Windows. То же самое относится к файлам .app, которые можно использовать в Mac OS, и для исполняемых файлов Linux.

Процедура создания наших приложений действительно очень и очень проста: внутри виртуальной среды, которую мы используем с нашим скриптом Python, мы даем команду:

pip install pyinstaller

 

После того, как это будет сделано, мы можем использовать его как любое программное обеспечение в командной строки, точно так же, как мы устанавливаем модули через pip:

pyinstaller script_name.py --onefile

 

Давайте посмотрим на вывод в папке, над которой мы работаем, и увидим, что были созданы некоторые новые файлы и папки.

Единственный файл, который нам понадобится, файл, который нас интересует и который мы затем можем передать, будет находиться в папке dist.

Как видите, все работает отлично, и мы можем использовать программу без необходимости знать, как использовать Python, как его настроить, как создать виртуальную среду, установить необходимые зависимости и так далее!

Внутри этого исполняемого файла есть все, что необходимо для правильной работы нашей программы.

Если вы работаете в Windows и генерируете исполняемый файл для программы с графическим интерфейсом, как в этом случае, я предлагаю вам добавить еще один вариант:

pyinstaller script_name.py --noconsole --onefile

 

Опция –noconsole гарантирует, что единственным окном, отображаемым в этих случаях, является графический интерфейс вашей программы, поскольку по умолчанию Windows также открывает системный терминал, который останется активным во время работы программы, что может вызвать путаницу, особенно для менее опытных пользователей.

Мы советуем вам делать тесты и экспериментировать самостоятельно, чтобы полностью понять, что мы имеем в виду.

Эта опция вам не понадобится, если вы обнаружите, что создаете исполняемые файлы для простых сценариев, которые можно использовать из терминала по понятным причинам.

Удачного кодирования! : D

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как в Python создать файл, записать и прочитать текст ~ PythonRu

Умение создавать файлы в Python открывает массу новых возможностей — например, позволяет хранить данные, сохраняя их согласованность для разных пользователей. Вместе с тем упрощает процесс управления данными, скрапинга контента и многое другое.

Важно и то, что в Python этот процесс очень простой.

Как создать файл в Python в три строки

С помощью следующего кода можно создать файл с названием BabyFile.txt и записать в него текст «Привет, файл!»:


my_file = open("BabyFile.txt", "w+")
my_file.write("Привет, файл!")
my_file.close()

В начале объявляется переменная my_file. После этого используются встроенные функции open и write для открытия и записи в файл. "w+" сообщает, что запись будет осуществляться в новый файл. Если он существует, то новое содержимое нужно записать поверх уже существующего. Если же вместо этого использовать параметр "w", тогда файл будет создан только в том случае, если он не существовал до этого.

Важно заметить, что в конце файл всегда нужно закрывать, чтобы изменения сохранились.

Как записывать, добавляя новое содержимое

С созданием файла разобрались. Теперь можно узнать, как редактировать, удалять и даже копировать файлы.

Если нужно добавить новые данные в файл, тогда вместо "w+" нужно просто использовать параметр "a+".


my_file = open("BabyFile.txt", "a+")
my_file.write("и еще кое-что!")
my_file.close()

Однако в таком случае не будет добавлена новая строка, поэтому важно не забыть использовать символ \n.

Для чтения же файла нужно выполнить такую команду:


my_file = open("BabyFile.txt", "a+")
file_contents == my_file.read()
print(file_contents)
Привет, файл!и еще кое-что!

Удаление и перемещение файлов

Зная, как создавать файл, важно уметь определять, существует ли он в системе. Это важно, ведь в противном случае можно попробовать записать, отредактировать или удалить файл, которого не существует, что приведет к ошибке.

Для этого используется модуль os, который также по умолчанию доступен в Python. Достаточно лишь импортировать его и можно приступать к использованию — для этого используются path и методы isfile(), isdir() или exists().


os.path.isfile("/путь/к/файлу")

С помощью этого модуля можно даже переименовывать файлы. Это просто:


os.rename("/путь/к/файлу", "/новый_путь/к/переименованному_файлу")

Особенно круто то, что если отредактировать путь, то файл переместится в соответствующую локацию. Как вариант, можно также использовать модуль shutil:


shutil.move("/путь/к/файлу", "/новый_путь/к/переименованному_файлу")

Наконец, для удаления файлов используется os.remove().

Вот и все. Теперь вы знаете, как создавать файлы, изменять их или удалять.

Краткий итог

Как в Python создать файл

  1. Создать файл

    my_file = open("file.txt", "w+")

  2. Записать в файл

    my_file.write("Привет, файл!")

  3. Сохранить и закрыть файл

    my_file.close()

Чем открыть PY

Файлы формата PY содержат в себе исходный код, который был написан на языке программирования Python. Часто такие документы встречаются в корневых папках различных приложений. Существуют методы, позволяющие самостоятельно открыть такой объект на компьютере и не только просмотреть его содержимое, но и запустить имеющийся исходный код, просмотрев его действие. В этом поможет несколько дополнительных программ или встроенное средство Windows. Давайте разберем все эти варианты по порядку.

Открываем файлы формата PY на компьютере

В рамках этой статьи будет рассмотрена процедура запуска программы или скрипта, закодированного внутри файлов указанного выше типа, поэтому мы не рекомендуем выполнять его в том случае, если вы получили документ из непонятного источника. Ведь внутри него может содержаться не только вирус, но и другие угрозы, которые причинят вред системе и личным данным.

Способ 1: Среда разработки IDLE

Мы решили начать именно со способа среды разработки IDLE, поскольку она является интегрированной и устанавливается на компьютер вместе со всеми необходимыми элементами языка программирования Python. Максимально полезным этот вариант станет тем юзерам, кто хочет в дальнейшем открывать и взаимодействовать с подобными объектами. Все действия выполняются так:

Перейти на официальный сайт загрузки Python

  1. Перейдите по указанной выше ссылке, чтобы попасть на сайт загрузки Python. В разделе «Download» укажите одну из поддерживаемых версий языка. Здесь следует отталкиваться от того, желаете ли вы работать с ЯП или просто хотите просмотреть один файл. Во втором случае выбор не имеет никакого значения.
  2. Во время инсталляции убедитесь в том, что галочкой отмечен пункт с установкой IDLE.
  3. По завершении запустите среду разработки из меню «Пуск» или папки, куда вы установили Python.
  4. Здесь наведите курсор на «File» и найдите пункт «Open».
  5. В Проводнике отыщите требуемый документ и дважды кликните по нему ЛКМ.
  6. Теперь вы получили исходный код с подсветкой синтаксиса. Можете просмотреть его и детально изучить.
  7. При необходимости выполнения кода через встроенный компилятор найдите «Run» и щелкните на «Run Module».
  8. Вы получите программу в действии. Если на экране появятся красные надписи, свидетельствующие о наличии ошибок, скорее всего, данный файл самостоятельно не запустить, ведь он является частью других данных.

Особенность этого метода заключается в том, что вместе с необходимой программой вы получаете все нужные стандартные инструменты, позволяющие тут же начать программировать на языке Python. Если этот вариант вам не подходит, предлагаем ознакомиться со следующими решениями.

Способ 2: Sublime Text

Хоть Sublime Text официально и считается обычным текстовым редактором, большинство пользователей задействуют его в качестве среды разработки, ведь здесь имеется подсветка синтаксиса, которая делает кодирование более комфортным. Программа занимает мало места на компьютере и распространяется бесплатно, поэтому ее можно без сомнений загрузить для просмотра файла формата PY.

Скачать Sublime Text

  1. После установки сразу же запустите Sublime Text, он будет полностью готов к работе. Разверните всплывающее меню «File» и отыщите там пункт «Open File».
  2. Через Проводник найдите файл и выберите его для открытия.
  3. Синтаксис сразу же будет определен программой, поскольку Python она распознает без предварительных настроек и загрузки дополнительных компонентов.
  4. В разделе «Tools» кликните на «Build».
  5. Укажите, что компилироваться будет именно Питон.
  6. Теперь внизу вы увидите исходный код в действии.

Sublime Text может использоваться в дальнейшем как средство просмотра подобных файлов, ведь еще он поддерживает множество других форматов. Помимо этого, он найдет свое применение и в качестве среды разработки, если это вдруг окажется необходимым.

Способ 3: Notepad++

Рассмотренный выше текстовый редактор считается проприетарным, то есть его исходный код закрыт и продукт официально принадлежит определенным лицам. Notepad++ — полная противоположность Sublime Text, поскольку распространяется бесплатно и имеет открытый исходный код. К тому же он поддерживает синтаксис большинства известных языков программирования, что делает его пригодным для использования в качестве средства открытия файлов формата PY.

Скачать Notepad++

  1. Запустите софт и нажмите на соответствующую вкладку, чтобы перейти к открытию документа.
  2. Выберите хранящийся на компьютере или съемном носителе объект.
  3. Весь синтаксис сразу будет подсвечен текстом, и вы сможете запустить выполнение исходного кода через «Запуск».
  4. Если параметры запуска не заданы, потребуется через обзор снова указать открытый файл.
  5. Далее будет запущена командная строка, где отобразится все содержимое, в случае когда это возможно.

Если командная строка сразу же закрылась после открытия, значит никаких действий с исходным кодом совершать нельзя и он является обычным скриптом или вовсе не выполняется по отдельности. Ознакомьтесь с содержимым файла, найдите комментарии или знакомые строки, чтобы расшифровать предназначение этого объекта.

Существует еще множество приложений, позволяющих открывать подобные форматы файлов. В большинстве случаев ими являются среды разработки, поддерживающие множество дополнительных инструментов, поэтому обычному пользователю загружать такой объемный софт не имеет никакого смысла. Однако если вы заинтересовались в работе с подобным ПО, советуем ознакомиться с обзором на лучшие решения в другой нашей статье, перейдя по указанной ниже ссылке.

Подробнее: Выбираем среду программирования

Способ 4: Стандартное средство Windows

Многие знают о выражении, смысл которого заключается в том, что опытный программист может обойтись стандартным Блокнотом, где и напишет любой софт или скрипты. Отчасти такое высказывание имеет долю правды, поскольку установленный по умолчанию Блокнот способен открыть для редактирования файлы различных ЯП, в том числе и Python, а делается это так:

  1. Щелкните ПКМ по необходимому документу и выберите пункт «Открыть с помощью».
  2. В списке отыщите «Блокнот» и укажите его в качестве средства просмотра.
  3. Теперь перед вами отобразится исходный код. Здесь его можно видоизменять и сохранять.
  4. Если появляется надобность в тестировании, запустите через «Пуск» утилиту «Командная строка».
  5. Перетащите в нее документ.
  6. Подтвердите ввод команды, нажав на Enter.
  7. Следите за выполнением кода.
  8. Если консоль сразу же закрывается, попробуйте добавить в конец файла выражение input(). Это предотвратит автоматическое завершение исполнения скрипта и «Командная строка» будет ждать, пока пользователь не нажмет любую клавишу на клавиатуре.

Конечно, недостаток такого метода заключается в отсутствии подсветки синтаксиса и не всегда привычном расположении выражений в строках, однако он позволяет не использовать дополнительное программное обеспечение, а обойтись только встроенным Блокнотом или другим аналогичным имеющимся текстовым редактором.

Выше мы продемонстрировали четыре различных метода просмотра и запуска файлов формата PY на компьютере. Как видите, осуществляется это в специальных средах разработки или обычных текстовых редакторах, поэтому от вас требуется только подобрать оптимальное решение.

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Работа с файлами в python. Чтение и запись в файл ~ PythonRu

Эта статья посвящена работе с файлами (вводу/выводу) в Python: открытие, чтение, запись, закрытие и другие операции.

Файлы Python

Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename).

В Python существует два типа файлов:

  1. Текстовые
  2. Бинарные

Текстовые файлы

Это файлы с человекочитаемым содержимым. В них хранятся последовательности символов, которые понимает человек. Блокнот и другие стандартные редакторы умеют читать и редактировать этот тип файлов.

Текст может храниться в двух форматах: (.txt) — простой текст и (.rtf) — «формат обогащенного текста».

Бинарные файлы

В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.

Они хранятся в формате .bin.

Любую операцию с файлом можно разбить на три крупных этапа:

  1. Открытие файла
  2. Выполнение операции (запись, чтение)
  3. Закрытие файла

Открытие файла

Метод open()

В Python есть встроенная функция open(). С ее помощью можно открыть любой файл на компьютере. Технически Python создает на его основе объект.

Синтаксис следующий:

f = open(file_name, access_mode)
 

Где,

  • file_name = имя открываемого файла
  • access_mode = режим открытия файла. Он может быть: для чтения, записи и т. д. По умолчанию используется режим чтения (r), если другое не указано. Далее полный список режимов открытия файла
Режим Описание
r Только для чтения.
w Только для записи. Создаст новый файл, если не найдет с указанным именем.
rb Только для чтения (бинарный).
wb Только для записи (бинарный). Создаст новый файл, если не найдет с указанным именем.
r+ Для чтения и записи.
rb+ Для чтения и записи (бинарный).
w+ Для чтения и записи. Создаст новый файл для записи, если не найдет с указанным именем.
wb+ Для чтения и записи (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
a Откроет для добавления нового содержимого. Создаст новый файл для записи, если не найдет с указанным именем.
a+ Откроет для добавления нового содержимого. Создаст новый файл для чтения записи, если не найдет с указанным именем.
ab Откроет для добавления нового содержимого (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
ab+ Откроет для добавления нового содержимого (бинарный). Создаст новый файл для чтения записи, если не найдет с указанным именем.

Пример

Создадим текстовый файл example.txt и сохраним его в рабочей директории.

Следующий код используется для его открытия.

f = open('example.txt','r') 
 fp = open('C:/xyz.txt','r') 
 

В этом примере f — переменная-указатель на файл example.txt.

Следующий код используется для вывода содержимого файла и информации о нем.

>>> print(*f) 
 This is a text file.
 >>> print(f) 
 <_io.TextIOWrapper name='example.txt' mode='r' encoding='cp1252'>
 

Стоит обратить внимание, что в Windows стандартной кодировкой является cp1252, а в Linux — utf-08.

Закрытие файла

Метод close()

После открытия файла в Python его нужно закрыть. Таким образом освобождаются ресурсы и убирается мусор. Python автоматически закрывает файл, когда объект присваивается другому файлу.

Существуют следующие способы:

Способ №1

Проще всего после открытия файла закрыть его, используя метод close().

f = open('example.txt','r')
 
 f.close()
 

После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.

Способ №2

Также можно написать try/finally, которое гарантирует, что если после открытия файла операции с ним приводят к исключениям, он закроется автоматически.

Без него программа завершается некорректно.

Вот как сделать это исключение:

f = open('example.txt','r')
 try:
 
 finally:
 f.close()
 

Файл нужно открыть до инструкции try, потому что если инструкция open сама по себе вызовет ошибку, то файл не будет открываться для последующего закрытия.

Этот метод гарантирует, что если операции над файлом вызовут исключения, то он закроется до того как программа остановится.

Способ №3

Инструкция with

Еще один подход — использовать инструкцию with, которая упрощает обработку исключений с помощью инкапсуляции начальных операций, а также задач по закрытию и очистке.

В таком случае инструкция close не нужна, потому что with автоматически закроет файл.

Вот как это реализовать в коде.

with open('example.txt') as f:
 
 

Чтение и запись файлов в Python

В Python файлы можно читать или записывать информацию в них с помощью соответствующих режимов.

Функция read()

Функция read() используется для чтения содержимого файла после открытия его в режиме чтения (r).

Синтаксис

file.read(size)
 

Где,

  • file = объект файла
  • size = количество символов, которые нужно прочитать. Если не указать, то файл прочитается целиком.

Пример

>>> f = open('example.txt','r')
 >>> f.read(7) 
 'This is '
 

Интерпретатор прочитал 7 символов файла и если снова использовать функцию read(), то чтение начнется с 8-го символа.

>>> f.read(7) 
 ' a text'
 

Функция readline()

Функция readline() используется для построчного чтения содержимого файла. Она используется для крупных файлов. С ее помощью можно получать доступ к любой строке в любой момент.

Пример

Создадим файл test.txt с нескольким строками:

This is line1.
 This is line2.
 This is line3.
 

Посмотрим, как функция readline() работает в test.txt.

>>> x = open('test.txt','r')
 >>> x.readline() 
 This is line1.
 >>> x.readline(2) 
 This is line2.
 >>> x.readlines() 
 ['This is line1.','This is line2.','This is line3.']
 

Обратите внимание, как в последнем случае строки отделены друг от друга.

Функция write()

Функция write() используется для записи в файлы Python, открытые в режиме записи.

Если пытаться открыть файл, которого не существует, в этом режиме, тогда будет создан новый.

Синтаксис

file.write(string)
 

Пример

Предположим, файла xyz.txt не существует. Он будет создан при попытке открыть его в режиме чтения.

>>> f = open('xyz.txt','w') 
 >>> f.write('Hello \n World') 
 Hello
 World
 >>> f.close() 
 

Переименование файлов в Python

Функция rename()

Функция rename() используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os.

Синтаксис следующий.

import os
 os.rename(src,dest)
 

Где,

  • src = файл, который нужно переименовать
  • dest = новое имя файла

Пример

>>> import os
 >>> 
 >>> os.rename("xyz.txt","abc.txt")
 

Текущая позиция в файлах Python

В Python возможно узнать текущую позицию в файле с помощью функции tell(). Таким же образом можно изменить текущую позицию командой seek().

Пример

>>> f = open('example.txt') 
 >>> f.read(4) 
 This
 >>> f.tell() 
 4
 >>> f.seek(0,0) 
 

Методы файла в Python

file.close() закрывает открытый файл
file.fileno() возвращает целочисленный дескриптор файла
file.flush() очищает внутренний буфер
file.isatty() возвращает True, если файл привязан к терминалу
file.next() возвращает следующую строку файла
file.read(n) чтение первых n символов файла
file.readline() читает одну строчку строки или файла
file.readlines() читает и возвращает список всех строк в файле
file.seek(offset[,whene]) устанавливает текущую позицию в файле
file.seekable() проверяет, поддерживает ли файл случайный доступ. Возвращает True, если да
file.tell() возвращает текущую позицию в файле
file.truncate(n) уменьшает размер файл. Если n указала, то файл обрезается до n байт, если нет — до текущей позиции
file.write(str) добавляет строку str в файл
file.writelines(sequence) добавляет последовательность строк в файл

Создание Python-скрипта, выполняемого в Unix

Чтобы создать скрипт, который будет выполняться в Unix, необходимо выполнить следующие шаги.

Для начала нужно написать сам код, который планируется выполнять в Unix. Сохраняем код в файле с расширением .py. После этого можно вызвать интерпретатор и указать имя файла, который следует выполнить.

Например, мы создали файл script.py и сохранили его в текущей директории.

# файл <script.py> print('Hello, Pythonist!')

Чтобы запустить выполнение инструкций из этого скрипта, нужно ввести в терминале:

$ python3 script.py Hello, Pythonist!

При этом мы явно указали оболочке, какой интерпретатор нужно использовать для скрипта (python 3).

Но допустим, что мы хотим создать файл, который можно будет просто запускать на выполнение:

$ ./script.py Hello, Pythonist!

Для этого нам нужно в самом файле со скриптом указать оболочке, какой интерпретатор вызывать для выполнения скрипта. Это делается путем добавления строчки в самом верху, над всеми инструкциями:

#!/usr/local/bin/python

Благодаря этой строке оболочка будет знать, что для выполнения скрипта нужно вызвать интерпретатор Python. Сам интерпретатор Python расценивает эту строку как комментарий и пропускает её.

И последний штрих. Нужно сделать сам файл выполняемым. Для этого нужно установить для него разрешение на выполнение, используя команду chmod +x file:

$ chmod +x ./script.py

Используем PyInstaller для создания exe-файла игры на Pygame / Песочница / Хабр

Я, как и многие новички в создании игр, столкнулся с проблемой как поделиться готовым проектом с друзьями, у которых не установлен Python.

На недостаток обучалок по созданию игр на Pygame не пожалуешься, но мне не удалось найти подробной инструкции как собрать единый exe-файл, для запуска которого не требуется держать рядом папку с изображениями и игровыми звуками.

Из множества библиотек, собирающих проекты в exe, выбрал PyInstaller. Его оказалось достаточно, чтобы справиться с задачей. Опишу все пошагово (для Windows).

Установка PyInstaller

В командной строке пишем:

pip install pyinstaller

Создание spec-файла (файла спецификации)

Pyinstaller создает приложение, выполняя содержимое файла спецификации.

Чтобы создать spec-файл, через командную строку в папке с проектом набираем:

pyi-makespec --onefile mygame.py

Флаг --onefile создает файл спецификации, который позволит упаковать всё необходимое в один exe-файл.

Получаем файл mygame.spec

Редактирование spec-файла

Теперь нужно правильно настроить spec-файл. Открываем spec-файл в текстовом редакторе.

block_cipher = None a = Analysis(['mygame.py'], pathex=['C:/Users/1/Desktop/Python/test'], binaries=[], datas=[('Images/image.png', 'Images'), ('Music/track.mp3', 'Music'), ('font.ttf', '.')], hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='mygame', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=False, icon='C:/Users/1/Desktop/Python/test/icon.ico') 

В качестве первого атрибута для объекта класса Analysis передается имя py-файла, который нужно скомпилировать.

Атрибут pathex отвечает за путь к папке проекта.

В списке datas указываются файлы, которые нужно загрузить для работы приложения (изображения, музыка/звуки, шрифты). Datas — это список кортежей. Каждый кортеж имеет два элемента строкового типа:

  • Первый — путь до файла, который нужно загрузить.
  • Второй указывает имя папки для хранения файла во время выполнения программы
    ('.' — означает, что файл будет помещен во временную папку без подкаталога).

В экземпляре класса EXE редактируем:
name — имя exe-файла.
console — отвечает за то, будет ли вызываться консоль при запуске приложения (True) или нет (False).
icon — содержит путь к иконке игры.

Редактирование путей к файлам в коде

В коде до загрузки файлов необходимо добавить функцию, которая позволит программе найти необходимые для работы файлы независимо от своего расположения (подсмотрено тут).

def resource_path(relative): if hasattr(sys, "_MEIPASS"): return os.path.join(sys._MEIPASS, relative) return os.path.join(relative) 

При запуске приложения PyInstaller распаковывает данные во временную папку и сохраняет путь к ней в переменной среды _MEIPASS.

Функция resource_path проверяет создана ли временная папка, и если да, то возвращает путь к ней для дальнейшей загрузки файлов. В противном случае (например, если запустить код через интерпретатор) функция вернет тот путь, который в неё передали (то есть путь к папке проекта с игрой).

Чтобы получить путь к файлу

  • если файл лежит в той же папке, что и py-файл, пишем:
path = resource_path('image.png')

  • если файл вынесен в отдельную папку проекта, пишем:
path = resource_path(os.path.join('Folder', 'image.png'))

При этом, если файл вынесен в отдельную папку проекта, то и во временной папке нужно создавать соответствующий подкаталог (см. редактирование параметра datas).

Далее загружаем файл:

img = pygame.image.load(path)

С музыкой и шрифтами аналогично.

Создание exe

В командной строке вводим:

pyinstaller mygame.spec

Готово! Exe-файл находится в папке dist. Замечание про функции quit() и exit() Если в коде вашей игры в качестве функций выхода используются quit() или exit(), то скомпилированное приложение работать не будет.

Эти функции включены, чтобы новичкам было проще ориентироваться в коде, и предназначены только для использования в интерпретаторе. На самом деле для их корректной работы требуется загрузить модуль site.

Стандартным способом выйти из программы является использование sys.exit().

Более подробно здесь.

Как записать файл .py из существующего скрипта Python?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

python - как создать файл .py в навесе?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

python - Как создать файл по определенному пути?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

python - преобразование расширения .py в исполняемый файл

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где
.

Как импортировать другие файлы Python?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

2. Написание сценария установки - документация Python 3.9.1

Сценарий установки является центром всей деятельности по созданию, распространению и установка модулей с помощью Distutils. Основное назначение сценария установки: чтобы описать распространение вашего модуля в Distutils, чтобы различные команды, которые работают с вашими модулями, делают правильные вещи. Как мы видели в разделе В простом примере, приведенном выше, сценарий установки состоит в основном из вызова setup () , и большая часть информации, предоставляемой Distutils модулем Разработчик предоставляется в качестве аргументов ключевого слова для setup () .

Вот немного более сложный пример, которому мы воспользуемся следующей парой. из разделов: собственный сценарий установки Distutils. (Имейте в виду, что хотя Distutils включены в Python 1.6 и новее, они также имеют независимую существование, чтобы пользователи Python 1.5.2 могли использовать их для установки другого модуля раздачи. Собственный сценарий установки Distutils, показанный здесь, используется для установки пакет в Python 1.5.2.)

 #! / Usr / bin / env python из настройки импорта distutils.core setup (name = 'Distutils', версия = '1.0 ', description = 'Утилиты распространения Python', author = 'Грег Уорд', author_email='[email protected] ', url = 'https: //www.python.org/sigs/distutils-sig/', пакеты = ['distutils', 'distutils.command'], ) 

Есть только два отличия между этим и банальным однофайловым распределение представлено в разделе "Простой пример: больше метаданных и спецификация чистых модулей Python по пакетам, а не по модулям. Это важно, поскольку Distutils состоит из пары десятков модулей, разделенных на (пока) два пакета; явный список каждого модуля было бы утомительно генерировать и сложно поддерживать.Для получения дополнительной информации о дополнительных метаданные, см. раздел Дополнительные метаданные.

Обратите внимание, что любые пути (файлы или каталоги), указанные в сценарии установки должны быть написаны с использованием соглашения Unix, то есть через косую черту. В Distutils позаботится о преобразовании этого независимого от платформы представления в все, что подходит для вашей текущей платформы, прежде чем использовать путь. Это делает ваш сценарий установки переносимым между операционными системами, что конечно, это одна из главных целей Distutils.В этом духе все Имена путей в этом документе разделены косой чертой.

Это, конечно, относится только к путям, указанным для функций Distutils. Если вы, например, используете стандартные функции Python, такие как glob.glob () или os.listdir () , чтобы указать файлы, вам следует соблюдать осторожность при записи Portable код вместо разделителей путей жесткого кодирования:

 glob.glob (os.path.join ('mydir', 'subdir', '* .html')) os.listdir (os.path.join ('mydir', 'subdir')) 

2.1. Перечисление целых пакетов

Параметр пакетов сообщает Distutils о необходимости обработки (сборки, распространения, install и т. д.) все чистые модули Python, найденные в каждом пакете, упомянутом в упаковки лист. Для этого, конечно, должен быть соответствие между именами пакетов и каталогами в файловой системе. В соответствие по умолчанию является наиболее очевидным, т.е. пакет distutils находится в каталоге distutils относительно корня дистрибутива.Таким образом, когда вы говорите packages = ['foo'] в своем сценарии установки, вы обещая, что Distutils найдет файл foo / __ init__.py (который может быть написано по-другому в вашей системе, но вы поняли идею) относительно каталог, в котором находится ваш сценарий установки. Если вы нарушите это обещание, Distutils выдаст предупреждение, но все равно обработает поврежденный пакет.

Если вы используете другое соглашение для компоновки исходного каталога, это не проблема: вам просто нужно указать опцию package_dir , чтобы сообщить Рассказывает о вашем соглашении.Например, скажем, вы сохраняете весь исходный код Python под lib , так что модули в «корневом пакете» (т.е. ни в одном пакет вообще) находятся в lib , модули в пакете foo находятся в lib / foo и так далее. Тогда вы бы поставили

 package_dir = {'': 'библиотека'} 

в вашем сценарии установки. Ключом к этому словарю являются имена пакетов и пустое имя пакета обозначает корневой пакет. Значения - это имена каталогов. относительно корня вашего дистрибутива.В этом случае, когда вы говорите пакетов = ['foo'] , вы обещаете, что существует файл lib / foo / __ init__.py .

Еще одно возможное соглашение - поместить пакет foo прямо в lib , пакет foo.bar в lib / bar и т. Д. Это будет записано в сценарии установки как

 package_dir = {'foo': 'lib'} 

Пакет : запись dir в словаре package_dir неявно применяется ко всем пакетам ниже package , поэтому foo.бар корпус есть автоматически обрабатывается здесь. В этом примере пакетов = ['foo', 'foo.bar'] указывает Distutils искать lib / __ init__.py и библиотека / bar / __ init__.py . (Имейте в виду, что хотя package_dir применяется рекурсивно, вы должны явно указать все пакеты в пакетов : Distutils будет , а не рекурсивно сканировать ваше дерево исходных текстов ищу любой каталог с файлом __init__.py .)

2.2. Перечисление отдельных модулей

Для небольшого распределения модулей вы можете предпочесть перечислить все модули, а не чем список пакетов, особенно в случае одного модуля, который входит в «Корневой пакет» (т. Е. Никакого пакета). Этот простейший случай был показан в раздел Простой пример; вот немного более сложный пример:

 py_modules = ['mod1', 'pkg.mod2'] 

Здесь описаны два модуля, один из которых находится в «корневом» пакете, а другой - в уп. уп.Опять же, макет пакета / каталога по умолчанию подразумевает, что эти два модуля можно найти в mod1.py и pkg / mod2.py , и что также существует pkg / __ init__.py . И снова вы можете отменить переписка пакет / каталог с использованием параметра каталог_пакета .

2.3. Описание модулей расширения

Так же, как писать модули расширения Python немного сложнее, чем писать чистые модули Python, описать их в Distutils немного сложнее.В отличие от чистых модулей недостаточно просто перечислить модули или пакеты и ожидать Distutils, чтобы найти нужные файлы; вы должны указать имя расширения, исходный файл (ы) и любые требования к компиляции / компоновке (включая каталог

.

Смотрите также