2017-03-01 82 views
1

我在尝试复制以下示例:https://github.com/takluyver/pynsist/tree/master/examples/tkinter但它不起作用。我有一个Python文件和.cfg的有拷贝从这里粘贴,但是当我在我的命令提示符下运行py -m nsist installer.cfg,我得到以下错误:使用Pynsist时出现KeyError

C:\Users\Mike\Desktop>py -m nsist installer.cfg 
Traceback (most recent call last): 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\runpy.py", line 193, in _run_module_as_main 
    "__main__", mod_spec) 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\runpy.py", line 85, in _run_code 
    exec(code, run_globals) 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nsist\__main__.py", line 2, in <module> 
    main() 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nsist\__init__.py", line 527, in main 
    shortcuts = configreader.read_shortcuts_config(cfg) 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nsist\configreader.py", line 182, in read_shortcuts_config 
    appcfg = cfg['Application'] 
    File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\configparser.py", line 956, in __getitem__ 
    raise KeyError(key) 
KeyError: 'Application' 

我在Windows 10上运行此在Python 3.6.0 64位。

+0

这很奇怪。你可以尝试编辑'C:\ Users \ Mike \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ nsist \ configreader.py',并将'print(dict(cfg))' 182?从这个输出应该有助于看到发生了什么。另外,你是否编辑过'installer.cfg'文件? –

+0

是的,它打印'{'DEFAULT':}'。我没有编辑'installer.cfg'文件。 – greenthumbtack

+0

啊,我认为配置文件不存在。它看起来在您提示的目录中(在您的示例中,这是桌面文件夹)。如果您的cfg文件位于其他位置,则可以使用'cd'导航到文件所在的位置。它找不到文件时应该给出更明确的错误 - 我会解决这个问题。 –

回答

2

问题原来是配置文件被称为installer.cfg.txt,而不是installer.cfg

如果您遇到类似问题,请仔细检查配置文件是否在正确的位置,并且该名称与您在命令行输入的内容相匹配。请记住,某些程序(如Windows资源管理器)可能会隐藏已知的扩展名,所以您看到的可能不是真正的文件名。使用终端或命令提示符通常会显示真实姓名。

当配置文件不存在时,我会让Pynsist give a clearer error