Я делаю программу с помощью pygame и хочу превратить ее в исполняемый файл.
Программа будет работать правильно, если это скрипт на python.
Но возникла проблема, если я попробуючтобы сделать его исполняемым файлом.
Я создал файл спецификации, показанный ниже, и запустил его, чтобы объединить все зависимости в исполняемый файл.
Наконец, я мог создать исполняемый файл, однако он не запустился с отображением сообщений об ошибках, как показано ниже.
↓ Сообщения об ошибках, которые я получил (там говорится, что папка с именем «resources» не существует! Но я создал виртуальную папку.)
https://imgur.com/sq67mil
Как это исправитьпроблема?
(я ссылался на этот документ https://pyinstaller.readthedocs.io/en/v3.3.1/spec-files.html)
версия PyInstaller: 3.3.1
версия Python: 3.6.6
↓ мой скрипт на python
#pygame_test.py located at Desktop/RPG_test
import pygame,sys,os
print(os.getcwd())
class Player(pygame.sprite.Sprite):
def __init__(self,image_path,root):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image_path).convert_alpha()
self.rect = self.image.get_rect()
def update(self):
self.rect.centerx = pygame.mouse.get_pos()[0]
self.rect.centery = pygame.mouse.get_pos()[1]
def main():
pygame.init()
root = pygame.display.set_mode((400,400))
running = True
player = Player("resources/tiger_window.png",root)
group = pygame.sprite.Group()
group.add(player)
fps = 30
clock = pygame.time.Clock()
while running:
clock.tick(fps)
root.fill((50,150,200))
group.update()
group.draw(root)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
running = False
pygame.quit()
sys.exit()
pygame.event.clear()
if __name__ == "__main__":
main()
↓ файл спецификации, который я создал командой "pyi-makepec".
# -*- mode: python -*-
block_cipher = None
a = Analysis(['pygame_test.py'],
pathex=['C:\\Users\\Ayata\\Desktop\\RPG_test'],
binaries=[],
datas=[("C:/Users/Ayata/Desktop/RPG_test/resources/tiger_window.png","resources")],
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='pygame_test',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )