我的问题与WEB上的现有问题几乎没有什么不同。让我尝试突出显示它。我有this代码,可以通过读取指定的.txt文件来做一些绘图。我将像往常一样构建它。我的 setup.py 应该可以完成这项工作。 setup.py的内容为here
如您所见,在上述两个文件中我都没有与 tkinter 相关的软件包。我在终端机上做了python setup.py build
,执行得很好。但是不能在Windows命令脚本中使用我的实际代码
build\\exe.win-amd64-3.5\\draw_precision_recall_curve.exe D:\dataset\Fire_Smoke\Train\filelist.txt
pause
它引发了此踪迹:
Traceback (most recent call last):
File "C:\python354\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
module.run()
File "C:\python354\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
exec(code, m.__dict__)
File "draw_precision_recall_curve.py", line 3, in <module>
import matplotlib.pyplot as plt
File "C:\python354\lib\site-packages\matplotlib\pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "C:\python354\lib\site-packages\matplotlib\backends\__init__.py", line 62, in pylab_setup
[backend_name], 0)
File "C:\python354\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 4, in <module>
from . import tkagg # Paint image to Tk photo blitter extension.
File "C:\python354\lib\site-packages\matplotlib\backends\tkagg.py", line 5, in <module>
from six.moves import tkinter as Tk
File "C:\python354\lib\site-packages\six.py", line 92, in __get__
result = self._resolve()
File "C:\python354\lib\site-packages\six.py", line 115, in _resolve
return _import_module(self.mod)
File "C:\python354\lib\site-packages\six.py", line 82, in _import_module
__import__(name)
ImportError: No module named 'tkinter'
在这里和那里的相关文章中,我无法解决此问题。 任何帮助表示赞赏。
答案 0 :(得分:1)
您可能没有使用tkinter
,但是您正在使用matplotlib
,并且它使用了tkinter
。
实际上,matplotlib
给您a choice of backends。但是IIRC,如果您尚未安装可选的Win32本机后端,则默认为Windows上的tkinter
(或者可能是TkAgg
,它使用tkinter
),并且始终在非Mac Unix上
所以:
matplotlib
(例如,生成要保存的文件),请明确指定非交互式后端。tkinter
捆绑在您的应用程序中,或者选择其他交互式后端并将那个捆绑在您的应用程序中。例如,假设您只想生成一堆图形为PNG文件。您可以使用TkAgg
非交互式后端,而不是通过默认的AGG
后端来这样做,就像这样:
import matplotlib
matplotlib.use('AGG')
import matplotlib.pyplot as plt