Windows-Pyinstaller错误"无法执行脚本" App点击时

时间:2016-11-21 09:08:54

标签: python windows tkinter pyinstaller

我很难克服这个错误,我已经到处寻找那个错误信息,似乎与我的情况无关:

"failed to execute script new-app" 

new-app 是我的python GUI程序。当我使用此命令运行pyinstaller时:

pyinstaller.exe --onedir --hidden-import FileDialog --windowed --noupx new-app.py

它运作顺利。另外,当我执行命令行来运行gui程序时,它运行正常,并使用以下命令生成GUI:

.\dist\new-app\new-app.exe

但是当我去那个文件希望能够点击应用程序来获取GUI时,它会给我上面提到的错误。那是为什么?

我使用的是python2.7,操作系统是Windows 7企业版。

任何输入都将受到赞赏并提前感谢。

10 个答案:

答案 0 :(得分:22)

嗯,我想我已经为自己的问题找到了解决方案,这就是我做的方式:

尽管我能够使用普通的python命令成功运行程序,并且能够成功运行pyinstaller并能够使用问题中提到的命令行执行应用程序“new_app.exe”,在这两种情况下都会显示GUI完全没问题。但是,只有当我单击应用程序时,它才会显示GUI并且不会生成错误。

所以,我做的是我在pyinstaller命令中添加了一个额外的参数--debug并删除了--windowed参数,以便我可以看到点击应用程序时实际发生的情况,我发现有错误当我追踪它时很有意义,它基本上抱怨“some_image.jpg”没有这样的文件或目录

当我从第一个位置运行脚本或者甚至使用命令行“./”时它抱怨并且没有抱怨的原因是因为文件图像存在于与脚本相同的路径中但是当pyinstaller创建时“dist”目录有应用程序产品,它完全意识到图像文件不存在,所以我基本上将它移动到那个可点击的应用程序在那里的dist目录!

答案 1 :(得分:3)

在脚本开头添加此功能:

import sys, os 
    def resource_path(relative_path):
        if hasattr(sys, '_MEIPASS'):
            return os.path.join(sys._MEIPASS, relative_path)
        return os.path.join(os.path.abspath("."), relative_path)

通过调用函数resource_path()来引用您的数据文件,如下所示:

resource_path('myimage.gif')

然后使用此命令:

pyinstaller --onefile --windowed --add-data todo.ico;. script.py

有关详细信息,请访问此documentation page

答案 2 :(得分:3)

在我的情况下,我有一个main.py与其他文件具有依赖性。使用以下命令使用py installer构建该应用程序后:

pyinstaller --onefile --windowed main.py

我在dist文件夹中找到了main.exe。我双击此文件,并提出了上面提到的错误。 为了解决这个问题,我只是将main.exe从dist目录复制到先前的目录,即我的main.py和依赖文件的根目录,并且在运行main.exe之后没有任何错误。

答案 3 :(得分:1)

In case anyone doesn't get results from the other answers, I fixed a similar problem by:

  1. adding --hidden-import flags as needed for any missing modules

  2. cleaning up the associated folders and spec files:

rmdir /s /q dist

rmdir /s /q build

del /s /q my_service.spec

  1. Running the commands for installation as Administrator

答案 4 :(得分:1)

由于与此处列出的原因不同的原因导致出现此错误,并且无法轻松找到解决方案,因此我认为可以在此处发布。

希望这对某人有帮助。

我的问题是在程序中引用文件。它找不到列出的文件,因为在编码时,我想在顶层目录中引用该文件,并且只是将其命名为

"my_file.png"

当我调用文件时。

pyinstaller不喜欢这样,因为即使我从同一个文件夹运行它,它也希望有完整的路径:

"C:\Files\my_file.png"

一旦我将所有路径更改为其路径的完整版本,就可以解决此问题。

答案 5 :(得分:0)

我遇到了同样的错误,并发现我是使用Anaconda编写脚本的,但是pyinstaller试图将脚本打包在纯Python上。因此,pythons库文件夹中不存在的模块会导致此问题。

答案 6 :(得分:0)

该错误是由于pyinstaller中缺少模块。您可以通过在可执行命令行中运行脚本来找到丢失的模块,即从命令中删除“ -w”。创建命令行可执行文件后,它将在命令行中显示缺少的模块。通过查找那些缺少的模块,可以将其添加到命令中: “ --hidden-import = missingmodule”

我通过这个解决了我的问题。

答案 7 :(得分:0)

我发现了一个类似的问题,但上面的答案都没有帮助。我找到了解决激活基础环境问题的方法。再次尝试我在没有基础的情况下所做的事情,我执行了 GUI.exe

正如@Shyrtle 所说,一旦解决了我最初的问题,我想添加背景图像,即使 file.py 和图像本身在同一位置,我也必须传递图像的整个路径目录。

答案 8 :(得分:0)

我遇到了类似的问题,这是因为我使用的是 anaconda 而不是在 pip 中安装依赖项,而是在 anaconda 中。帮助我的是在 pip 中安装依赖项。

答案 9 :(得分:0)

就我而言(菜鸟级)我忘记安装库“matplotlib”。程序在 Pycharm 中工作,但当我尝试从终端打开时却没有。在主目录中安装库后一切正常。