pyinstaller 以 plotly 失败

k-w*_*war 9 python pyinstaller plotly

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

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


回溯(最近一次调用):文件“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 行,在 load_module exec(字节码, 模块.dict) 文件“actual_vs_mai.py”,第 12 行,在文件“”,第 2237 行,在 _find_and_load 文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”,第 1191 行,在 _load_unlocked 文件“”,第 1161 行,在 _load_backcompatible 中d:\users\ktehrani\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module exec(bytecode, module. dict ) 文件" site-packages\plotly__init__.py”,第 31 行,在文件“”,第 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 行,在 load_module exec(bytecode, module. dict ) File "site-packages\plotly\graph_objs__init__.py", line 14, in
File "", line 2237, in _find_and_load
File "", line 2226, in _find_and_load_unlocked File "", line 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 行,在load_module EXEC(字节码,模块。字典) 文件“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 行,在 load_module exec(字节码,模块字典)文件“站点包\ plotly \ graph_reference.py”,线路578,在
文件“site-packages\plotly\graph_reference.py”,第 70 行,get_graph_reference 文件“site-packages\setuptools-27.2.0-py3.4.egg\pkg_resources__init__.py”,第 1215 行,resource_string 文件“ site-packages\setuptools-27.2.0-py3.4.egg\pkg_resources__init__.py”,第 1457 行,在 get_resource_string 文件“site-packages\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 行,在 get_data 中打开( path, 'rb') as fp: FileNotFoundError: [Errno 2] 没有这样的文件或目录:'H:\Python\Commodity_M AI_Trade_List\Code\dist\comdty_runtime\plotly\package_data\default-schema。json'

小智 12

我遇到了同样的问题,并通过 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

pyinstaller myproject.spec myproject.py
Run Code Online (Sandbox Code Playgroud)

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


Jus*_*lor 7

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

...

datas=[('(...)/Python/Python36-32/Lib/site-packages/plotly/', './plotly/')],
Run Code Online (Sandbox Code Playgroud)

...

  • 应该在哪里添加这一行? (2认同)

Cfi*_*ari 5


PyInstaller 似乎并不完全支持plotly。
我使用了对我有用的解决方案。

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