【问题标题】:AttributeError: 'FrozenImporter' object has no attribute 'filename'AttributeError:“FrozenImporter”对象没有属性“文件名”
【发布时间】:2019-06-25 16:11:10
【问题描述】:

使用 PyInstaller 运行从 plotly-dash 代码生成的 exe 文件时,我不断收到以下错误。

AttributeError: 'FrozenImporter' object has no attribute 'filename'

做了一些深入的检查,只能识别出 dash 尝试 import dash_renderer 并从 package.filename

尝试添加以下但仍然无法解决

  1. 在我的代码中添加了 import dash_renderer
  2. 将 dash 和 dash_renderer 包文件夹复制到 dist/{app}/ 文件夹中

我的破折号代码

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
    html.H2(children='H-{} Meeting Dashboard'.format("SS"), style={'text-align':'center'}),
    html.Div(children=[
        html.Div('''Generated on {}'''.format(str(datetime.now())[:19]), style={'text-align':'center', 'font-size':'15px'})
        ], className='row')]
    )

if __name__ == "__main__":
    app.run_server(debug=True)

用于生成 exe 文件的 PyInstaller 代码

\path\to\python37\python.exe -m PyInstaller app_short.py

运行.exe文件时出错,在下面遇到错误

my\directory>app_short.exe
2019-06-25 23:36:55 Imported all modules
Traceback (most recent call last):
  File "app_short.py", line 24, in <module>
  File "site-packages\dash\dash.py", line 1476, in run_server
  File "site-packages\dash\dash.py", line 1361, in enable_dev_tools
  File "site-packages\dash\dash.py", line 1359, in <listcomp>
AttributeError: 'FrozenImporter' object has no attribute 'filename'
[16716] Failed to execute script app_short

运行app_short.py文件可以正常启动flask应用,可以访问html页面,但是exe一直显示AttributeError。

\my\directory>app_short.py
2019-06-25 23:56:47 Imported all modules
Running on http://127.0.0.1:8050/
Debugger PIN: 313-047-004
 * Serving Flask app "app_short" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
2019-06-25 23:56:51 Imported all modules
Running on http://127.0.0.1:8050/
Debugger PIN: 074-068-565

如何解决这个错误?

【问题讨论】:

    标签: python pyinstaller plotly-dash


    【解决方案1】:

    我遇到了同样的错误信息,我通过更改解决了它

    if __name__ == "__main__":
        app.run_server(debug=True)
    

    if __name__ == "__main__":
        app.run_server(debug=False)
    

    不知道为什么会发生这种情况,或者使用debug=False 运行是否可以满足您的需求!也许其他人可以详细说明?

    【讨论】:

    • 显然,在 pyinstaller 编译期间,dash 所需的文件夹被遗漏了。通过将以下文件夹添加到后期编译中来完成这项工作。 dash_core_components 、 dash_html_components 和 dash_renderer
    • 我刚刚浏览了这个页面,并在我的代码中实现了你的“错误”解决方案。工作就像一个魅力,谢谢!
    • 但是你不能使用调试模式。
    • 对。它适用于 debug=False。太棒了:)
    • Here 也是一些例子
    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多