Pygame pas de chargement png après .exe avec Pyinstaller

J'ai essayé de faire un .exe de mon .py jeu et c'est vraiment frustrant.

Je suis à l'aide de Python 3.5.2, Pygame 1.9.2 et Pyinstaller 3.2.

Le jeu fonctionne parfaitement .py, mais après je entrer pyinstaller --debug game.py, l' .exe est construit et je le lance, j'obtiens le suivant:

débogage de l'écran

Ce sont les lignes de code à partir de game.py qui peuvent être liés à l'erreur:

from os import path
img_dir = path.join(path.dirname(__file__), 'sprites')
title_screen = pygame.image.load(path.join(img_dir, 'title_screen.png'))

Je pense qu'il doit avoir quelque chose à voir avec pyinstaler de ne pas être en mesure d'obtenir mes sprites dossier, parce que quand j'essaie d'exécuter pyinstaller --icon=/sprites/icon.ico game.py, j'obtiens ceci:

icône de l'écran d'erreur

Mais si j'utilise pyinstaller --icon=icon.ico game.py il charge l'icône de l'amende juste.

Voici mon fichier spec:

# -*- mode: python -*-

block_cipher = None

added_files = [
         ( '/sprites', 'sprites' ),
         ( '/music', 'music' ),
         ( 'Heavitas.ttf', '.'),
         ( 'Roboto-Light.ttf', '.'),
         ( 'high scores.csv', '.')
         ]


a = Analysis(['spec_file.py'],
             pathex=['C:\\Users\\rodri\\Documents\\Code\\The Color That Fell From The Sky'],
             binaries=None,
             datas=added_files,
             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,
          exclude_binaries=True,
          name='spec_file',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='spec_file')
Vous pouvez convertir toutes les ressources pour base64 cordes (peut-être compresser en premier), les inclure dans le script et écrire/recréer les fichiers en cours d'exécution

OriginalL'auteur Rodrigo Nascimento | 2016-12-17