我在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
。
这里可能出了什么问题?
答案 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已发布。我现在使用它,它解决了这个问题以及this和this之类的其他问题,我之前只能使用开发人员版本解决这个问题。所以我强烈建议您升级到最新版本。