【问题标题】:pyinstaller fails with plotlypyinstaller 因情节失败而失败
【发布时间】:2018-02-16 09:20:52
【问题描述】:

我正在使用 pyinstaller 编译我当前的程序,它似乎无法处理所有必需的文件。它自己运行良好,无需情节它也可以编译和运行。

似乎无法找到我什至无法在驱动器上的任何位置找到的文件“default-schema.json”。


Traceback(最近一次调用最后一次):文件“comdty_runtime.py”,行 17,在文件“”中,第 2237 行,在 _find_and_load 文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”中,第 1191 行,在 _load_unlocked 文件“”中,行 1161,在 _load_backward_compatible 文件中 "d:\users\ktehrani\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 389 行,在 加载模块 exec(bytecode, module.dict) 文件“actual_vs_mai.py”,第 12 行,在文件“”,第 2237 行,在 _find_and_load 文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”中,第 1191 行,在 _load_unlocked 文件“”中,行 1161,在 _load_backward_compatible 文件中 "d:\users\ktehrani\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 389 行,在 加载模块 exec(bytecode, module.dict) File "site-packages\plotly__init__.py",第 31 行,在 File "",第 2237 行,在 _find_and_load 文件中 "",第 2226 行,在 _find_and_load_unlocked 文件“”,第 1191 行,在 _load_unlocked
文件“”,第 1161 行,在 _load_backward_compatible 文件“d:\users*\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 389 行,在 加载模块 exec(bytecode, module.dict) 文件“site-packages\plotly\graph_objs__init__.py”,第 14 行,在
文件“”,第 2237 行,在 _find_and_load
文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”,第 1191 行,在 _load_unlocked 文件“”,行 1161,在 _load_backward_compatible 文件中 "d:\users*\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 389 行,在 加载模块 exec(bytecode, module.dict) 文件“site-packages\plotly\graph_objs\graph_objs.py”,第 34 行,在 文件“”,第 2237 行,在 _find_and_load
文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”,第 1191 行,在 _load_unlocked 文件“”,行 1161,在 _load_backward_compatible 文件中 "d:\users*\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 389 行,在 加载模块 exec(bytecode, module.dict) 文件“site-packages\plotly\graph_reference.py”,第 578 行,在
文件“site-packages\plotly\graph_reference.py”,第 70 行,在 get_graph_reference 文件 “站点包\setuptools-27.2.0-py3.4.egg\pkg_resources__init__.py”, 第 1215 行,在 resource_string 文件中 “站点包\setuptools-27.2.0-py3.4.egg\pkg_resources__init__.py”, 第 1457 行,在 get_resource_string 文件中 “站点包\setuptools-27.2.0-py3.4.egg\pkg_resources__init__.py”, 第 1530 行,在 _get 文件中 "d:\users*\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py",第 474 行,在 获取数据 使用 open(path, 'rb') as fp: FileNotFoundError: [Errno 2] No such file or directory: 'H:\Python\Commodity_M AI_Trade_List\Code\dist\comdty_runtime\plotly\package_data\default-schema。 json' comdty_runtime 执行脚本失败

【问题讨论】:

    标签: python plotly pyinstaller


    【解决方案1】:


    PyInstaller 似乎不完全支持 plotly。
    我使用了一个适合我的解决方案。

    1. 不要使用一个文件选项
    2. 将python安装目录的plotly包(对我来说是Lib\site-packages\plotly)完全复制到/dist/{exe name}/目录下

    【讨论】:

      【解决方案2】:

      您仍然可以使用一个文件选项,只需为 pyinstaller 创建一个 .spec 文件,并在数据中包含所需的 plotly 目录,如下所示:

      ...

      datas=[('(...)/Python/Python36-32/Lib/site-packages/plotly/', './plotly/')],
      

      ...

      【讨论】:

      • 我相信你现在缺少一个起始括号datas=[('(...)/Python/Python36-32/Lib/site-packages/plotly/', './plotly/')]
      • 应该在哪里添加这一行??
      【解决方案3】:

      我遇到了同样的问题,并通过 pyinstaller 文档找出了该怎么做:

      pyinstaller 会创建一个与您的 .py 文件同名的 .spec 文件。 在a = Analysis下,你会发现datas = []

      a = Analysis(['graphic_interface.py'],
                   pathex=[xxx],
                   binaries=[],
                   datas=[],
                   hiddenimports=[],
                   hookspath=[],
                   runtime_hooks=[],
                   excludes=[],
                   win_no_prefer_redirects=False,
                   win_private_assemblies=False,
                   cipher=block_cipher,
                   noarchive=False)
      

      在那里你添加了 plotly 的路径。相对路径对我不起作用,所以我设置了一个绝对路径

      datas=[('C:\\Users\\Me\\PycharmProjects\\Project\\venv\\Lib\\site-packages\\plotly\\', 'plotly')],
      

      现在你必须在运行 pyinstaller 时使用 spec 文件

      pyinstaller myproject.spec myproject.py
      

      您不必担心其他命令,例如 oneFile 等,因为它们已经保存在 .spec 文件中

      【讨论】:

      • 我参加这个聚会有点晚了,但我发现您的回答非常有帮助。谢谢!
      【解决方案4】:

      这可能无法解决您的问题,但它解决了我的 Plotly 地图问题。我将此代码放入我的.spec 文件中,并在通过 PyInstaller 后能够运行 Plotly 图表。无法显示我的地图并收到错误消息。

      File "<frozen importlib._bootstrap>"
      ModuleNotFoundError: No module named 'plotly.validators.choropleth' pyinstaller
      

      现在它可以使用以下内容:

      # -*- mode: python ; coding: utf-8 -*-
      
      import sys
      sys.setrecursionlimit(5000)
      
      block_cipher = None
      
      
      a = Analysis(['napdgui.py'],
                   pathex=['C:\\Users\\USERNAME\\Desktop\\Python\\NA\\naguiv1'],
                   binaries=[],
                   datas=[('C:\\Users\\USERNAME\\Anaconda3\\Lib\\site-packages\\plotly\\', 'plotly'),
                      ],
                   hiddenimports=['pkg_resources.py2_warn', 'app.urls'],
                   hookspath=[],
                   runtime_hooks=[],
                   excludes=[],
                   win_no_prefer_redirects=False,
                   win_private_assemblies=False,
                   cipher=block_cipher,
                   noarchive=False)
      pyz = PYZ(a.pure, a.zipped_data,
                   cipher=block_cipher)
      exe = EXE(pyz,
                a.scripts,
                [],
                exclude_binaries=True,
                name='Tool v08122020',
                debug=False,
                bootloader_ignore_signals=False,
                strip=False,
                upx=True,
                console=True )
      coll = COLLECT(exe,
                     a.binaries,
                     a.zipfiles,
                     a.datas,
                     strip=False,
                     upx=True,
                     upx_exclude=[],
                     name='Analysis Tool v081320')
      

      【讨论】:

        【解决方案5】:

        在使用 pyinstaller 之前,请确保您在程序中使用的导入在需求文件中明确列出。

        pip freeze->requirements.txt 快速在您的程序中创建需求文件。

        我不确定这是否是解决方案?一旦我更新了需求文件然后制作了一个可执行文件,我就有类似的问题似乎消失了。

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2016-08-01
        • 1970-01-01
        • 2010-12-28
        • 2014-09-16
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多