2017-09-07 2 views
1

Je reçois une erreur inattendue. Je me rends compte qu'il ya des messages avec des erreurs similaires, mais soit ne pouvait pas comprendre la réponse ou ne pouvait pas le relier à mon cas (dictionnaire). J'essaie de calculer un score de similarité pour chaque ligne d'un fichier d'entrée et à chaque itération (c'est-à-dire pour chaque ligne de fichier d'entrée) stocker les 20 premières valeurs de la partition dans un dictionnaire.AttributeError: l'objet 'list' n'a pas d'attribut 'item' Demande

Après mon code:

import sys 
from cx_Freeze import setup, Executable 

includefiles = ['Arcade Funk.mp3', 'game over.wav', 'FrogTown.wav','pixel ufo.png','introBackground.png','pixel playButton.png','pixel instructionButton.png','pixel playButtonHighlighted.png','pixel instructionButtonHighlighted.png','instructionPage.png','crashBackground.png','space background long.png','pixel earth.png','pixel asteroid.png', 'pixel icon.png','Montserrat-ExtraBold.otf','Montserrat-Bold.otf','arial.ttf'] 
includes = [] 
excludes = ['Tkinter'] 
packages = ['pygame'] 
build_exe_options = {'includes':[includes],'packages':[packages], 'excludes':[excludes], 'include_files':[includefiles]} 

base = None 
if sys.platform == 'win64': 
    base = 'Win64GUI' 
elif sys.platform == 'win32': 
    base = 'Win32GUI' 

setup( name = 'Earth Invaders', 
     version = '0.1', 
     author = 'Victor Olawale-Apanpa', 
     description = 'Slider Game: Space', 
     options = {'build_exe': [build_exe_options]}, 
     executables = [Executable('EarthInvaders.py', base=base)] 
) 

Ceci est l'erreur

Traceback (most recent call last): 
    File "C:/Users/Vix_Ox/Desktop/Earth Invaders/setup.py", line 21, in <module> 
executables = [Executable('EarthInvaders.py', base=base)] 
    File "C:\Users\----\AppData\Local\Programs\Python\Python36-32\lib\site- 
packages\cx_Freeze\dist.py", line 349, in setup 
distutils.core.setup(**attrs) 
    File "C:\Users\----\AppData\Local\Programs\Python\Python36-32\lib\distutils\core.py", line 108, in setup 
_setup_distribution = dist = klass(attrs) 
    File "C:\Users\----\AppData\Local\Programs\Python\Python36-32\lib\site-packages\cx_Freeze\dist.py", line 24, in __init__ 
distutils.dist.Distribution.__init__(self, attrs) 
    File "C:\Users\----\AppData\Local\Programs\Python\Python36-32\lib\distutils\dist.py", line 237, in __init__ 
for (opt, val) in cmd_options.items(): 
AttributeError: 'list' object has no attribute 'items' 

Répondre

1

On dirait que vous avez suivi the documentation bien.

Je pense que le problème est quelques accolades supplémentaires sur la ligne 20: [build_exe_options] devrait être build_exe_options. On s'attend à ce que cette variable soit un dictionnaire, mais elle obtient une liste, donc l'erreur.

setup( name = 'Earth Invaders', 
     version = '0.1', 
     author = 'Victor Olawale-Apanpa', 
     description = 'Slider Game: Space', 
     options = {'build_exe': build_exe_options}, 
     executables = [Executable('EarthInvaders.py', base=base)] 
) 

Vous pouvez également constater que vous devez appliquer ce rétroactivement à une ligne plus tôt, car ils sont déjà encapsulées dans des listes quand ils sont déclarés:

build_exe_options = {'includes':includes,'packages':packages, 'excludes':excludes, 'include_files':includefiles} 
+0

Voir aussi la configuration dans [cette question] (https://stackoverflow.com/questions/26907177/ensuredispatch-error-when-using-cx-freeze-for-making-exe) pour un exemple de la façon dont le vôtre pourrait ressembler. (Il est configuré d'une manière similaire à la vôtre) – Addison