我正在使用pyinstaller编译我当前的程序,它似乎无法在plotly中处理所有必需的文件。它本身运行良好,没有情节,它也可以编译和运行。
似乎未能找到我甚至无法找到驱动器上任何位置的文件“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:\用户\ ktehrani \应用程序数据\本地\连续\ anaconda3 \ ENVS \ PY34 \ LIB \网站-P ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第389行,in load_module exec(字节码,模块。字典)文件“actual_vs_mai.py”,第12行,在文件“”,第2237行, _find_and_load文件“”,第2226行,在_find_and_load_unlocked文件“”,第1191行,在_load_unlocked文件“”中,行 1161,在_load_backward_compatible文件中 “d:\用户\ ktehrani \应用程序数据\本地\连续\ anaconda3 \ ENVS \ PY34 \ LIB \网站-P ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第389行,in load_module exec(字节码,模块。字典)文件“site-packages \ plotly__init __。py”,第31行,在文件中 “”,第2237行,在_find_and_load文件中 “”,第2226行,在_find_and_load_unlocked中 文件“”,第1191行,在_load_unlocked中 文件“”,第1161行,in _load_backward_compatible文件“d:\ users * \ appdata \ local \ continuum \ anaconda3 \ envs \ py34 \ lib \ site-p ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第389行,in load_module exec(字节码,模块。字典)文件“site-packages \ plotly \ graph_objs__init __。py”,第14行,中
文件“”,第2237行,在_find_and_load中 文件“”,第2226行,in _find_and_load_unlocked文件“”,第1191行,在_load_unlocked文件“”中,行 1161,在_load_backward_compatible文件中 “d:\用户* \应用程序数据\本地\连续\ anaconda3 \ ENVS \ PY34 \ LIB \网站-P ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第389行,in load_module exec(字节码,模块。字典)文件“site-packages \ plotly \ graph_objs \ graph_objs.py”,第34行,in 文件“”,第2237行,在_find_and_load中 文件“”,第2226行,in _find_and_load_unlocked文件“”,第1191行,在_load_unlocked文件“”中,行 1161,在_load_backward_compatible文件中 “d:\用户* \应用程序数据\本地\连续\ anaconda3 \ ENVS \ PY34 \ LIB \网站-P ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第389行,in load_module exec(字节码,模块。字典)文件“site-packages \ plotly \ graph_reference.py”,第578行,中
文件“site-packages \ plotly \ graph_reference.py”,第70行,in get_graph_referenc e文件 “站点包\ setuptools的-27.2.0-py3.4.egg \ pkg_resources__init __。PY” li ne 1215,在resource_string文件中 “站点包\ setuptools的-27.2.0-py3.4.egg \ pkg_resources__init __。PY” li ne 1457,在get_resource_string文件中 “站点包\ setuptools的-27.2.0-py3.4.egg \ pkg_resources__init __。PY” li 1530,在_get文件中 “d:\用户* \应用程序数据\本地\连续\ anaconda3 \ ENVS \ PY34 \ LIB \网站-P ackages \ PyInstaller \ loader \ pyimod03_importers.py“,第474行,in GET_DATA open(path,'rb')为fp:FileNotFoundError:[Errno 2]没有这样的文件或目录:'H:\ Python \ Commodity_M AI_Trade_List \代码\ DIST \ comdty_runtime \ plotly \ package_data \默认模式。 json'无法执行脚本comdty_runtime
答案 0 :(得分:5)
我遇到了同样的问题,并在pyinstaller文档中找到了解决方法:
pyinstaller创建一个与.py文件同名的.spec文件。 在=分析下,您将找到数据= []
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)
您添加了plot的路径。相对路径对我不起作用,所以我设置了绝对路径
datas=[('C:\\Users\\Me\\PycharmProjects\\Project\\venv\\Lib\\site-packages\\plotly\\', 'plotly')],
现在您必须在运行pyinstaller时使用spec文件
pyinstaller myproject.spec myproject.py
您不必担心oneFile等其他命令,因为它们已经保存在.spec文件中
答案 1 :(得分:3)
这可能无法解决您的问题,但可以解决我的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')
答案 2 :(得分:2)
PyInstaller似乎并没有完全支持这种情况
我使用了一个适用于我的解决方案。
答案 3 :(得分:2)
您仍然可以使用one file选项,只需为pyinstaller创建一个.spec文件,并在数据中包含所需的plotly目录,如下所示:
...
datas=[('(...)/Python/Python36-32/Lib/site-packages/plotly/', './plotly/')],
...