没有名为Tkinter的模块

时间:2014-10-07 17:25:29

标签: python python-2.7 pyinstaller

我在python2.7中有一个小脚本,我想将其转换为Windows可执行文件。我为此使用了pyinstaller

剧本:

import sys 
import matplotlib.pyplot as plt
import matplotlib.image as mpimg


def get_inputs():
    coor = raw_input(">>>top x left: ").replace(" ", "")
    top, left = coor.split("x")
    top = int(top.strip())
    left = int(left.strip())
    return top, left 

def plot_location(top, left):
    img= mpimg.imread('nbahalfcourt.jpg')
    plt.imshow(img)
    plt.scatter(left, top)
    plt.grid()
    plt.show()

def main():
    top, left = get_inputs()
    plot_location(top, left)

if __name__ == '__main__':

    print "Input top x left coordinates (no space) eg: 44x232"

    run = True 
    while run:
        main()

基本上,脚本只是在网格上绘制一个点。

转换过程成功完成。当我运行.exe但是我有ImportError(见下文),即使我在任何地方都没有引用Tkinter

enter image description here

这里可能出了什么问题?

2 个答案:

答案 0 :(得分:5)

我感觉matplotlib在内部使用Tkinter模块,但是以非标准方式导入它。然后pyinstaller不会注意到需要Tkinter,并且随后不会将其捆绑到可执行文件中。

尝试明确地将import Tkinter放在脚本的顶部。

答案 1 :(得分:3)

我遇到了同样的问题,这里的解决方案都没有。我正在使用Pyinstaller 3.2(当时的最新版本),当我使用

升级到最新的开发人员版本时,一切都已修复(并且不需要导入语句)
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

这似乎表明,在写这篇文章的时候,这个问题的所有问题仍在解决中

编辑:截至2017年1月15日,Pyinstaller版本3.2.1已发布。我现在使用它,它解决了这个问题以及thisthis之类的其他问题,我之前只能使用开发人员版本解决这个问题。所以我强烈建议您升级到最新版本。