Python 2.7 Inno安装编译器后init.tcl出现Python错误

Python 2.7 Inno安装编译器后init.tcl出现Python错误,python-2.7,installation,tcl,inno-setup,py2exe,Python 2.7,Installation,Tcl,Inno Setup,Py2exe,我有一个用py2exe转换成exe的程序。之后,我尝试使用Inno安装程序进行安装。我包括了所有必要的文件,如.dll、.pyd、.gif、.wav、tlc文件夹(tcl8.5、tk8.5)等。但在安装程序后,出现以下错误: C:\Program Files (x86)\test>test.exe Traceback (most recent call last): File "test.py", line 9359, in <module> File "test.py

我有一个用py2exe转换成exe的程序。之后,我尝试使用Inno安装程序进行安装。我包括了所有必要的文件,如.dll、.pyd、.gif、.wav、tlc文件夹(tcl8.5、tk8.5)等。但在安装程序后,出现以下错误:

C:\Program Files (x86)\test>test.exe
Traceback (most recent call last):
  File "test.py", line 9359, in <module>
  File "test.py", line 11, in __init__
  File "Tkinter.pyc", line 1745, in __init__
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    {C:/Program Files (x86)/lib/tcl8.5} {C:/Program Files (x86)/lib/tcl8.5} C:/l
ib/tcl8.5 {C:/Program Files (x86)/library} C:/library C:/tcl8.5.2/library C:/tcl
8.5.2/library



This probably means that Tcl wasn't installed properly.
C:\ProgramFiles(x86)\test>test.exe
回溯(最近一次呼叫最后一次):
文件“test.py”,第9359行,在
文件“test.py”,第11行,在_init中__
文件“Tkinter.pyc”,第1745行,在_init中__
_tkinter.TclError:在以下目录中找不到可用的init.tcl:
{C:/ProgramFiles(x86)/lib/tcl8.5}{C:/ProgramFiles(x86)/lib/tcl8.5}C:/l
ib/tcl8.5{C:/ProgramFiles(x86)/library}C:/library C:/tcl8.5.2/library C:/tcl
8.5.2/图书馆
这可能意味着Tcl没有正确安装。

我怎样才能解决这个问题?提前谢谢。

这解决了我的问题。我已经在名为
dest
(v0.6.9 win32)的py2exe输出目录之外创建了我的Inno设置(v5.5.5)

Py2exe output
dest
包含一个名为
tcl
的目录,其中包含文件和子文件夹。因此,在Inno设置脚本中,将以下条目添加到
[文件]
部分:

Source: dest\tcl\*; DestDir: "{app}\tcl"; Flags: createallsubdirs recursesubdirs
在我的例子中,
currentWorkingdir\
被添加到
dest\tcl\*
。这将获取所有内容并将其发送到
DestDir:“(应用程序)\tcl\”
,后者将获取文件和文件夹

标志
createallsubdirs
recursesubdirs
完成所有工作。这是“帮助”的摘录:

createallsubdirs

默认情况下,编译器在递归时跳过空目录 搜索源文件名/通配符的子目录。这面旗 导致在安装时创建这些目录(就像 您为它们创建了[Dirs]条目)

必须与recursesubdirs组合


那么
init.tcl
安装在哪里?@DonalFellows与其他文件一样,它也安装在程序文件(x86)中。在tcl8.5中,这个答案对我来说没有意义,因为我收到了相同的错误消息,但我的文件在正确的目录中。出于沮丧,我尝试了它,只是简单地将:DestDir:“{app}”改为:DestDir:“{app}\tcl”很好地解决了这个问题,但我不明白为什么-(