我创建了一个python脚本,它使用创建一个Tableau (.hyper)提取文件。主要基于Tableau提供的示例脚本。
我试着用pyinstaller来打包这个。Pyinstaller“成功”创建了exe,但当我尝试运行exe时,会得到以下错误:
Traceback (most recent call last):
File "create_datasource.py", line 3, in <module>
import tableauhyperapi
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\__init__.py", line 126, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\catalog.py", line 15, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\connection.py", line 20, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\result.py", line 18, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\date.py", line 14, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\impl\hapi.py", line 14, in <module>
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "C:\Users\user\AppData\Roaming\Python\Python38\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
exec(bytecode, module.__dict__)
File "tableauhyperapi\impl\dll.py", line 28, in <module>
File "tableauhyperapi\impl\util.py", line 65, in find_hyper_api_library
RuntimeError: tableauhyperapi.dll library not found. Could not find the Hyper API binary directory, tried C:\Users\user\AppData\Local\Temp\_MEI450082\tableauhyperapi\bin.
[43160] Failed to execute script create_datasource
我尝试将tableauhyperapi.dll作为二进制文件添加到pyinstaller命令中,但它仍然引发上述错误。
有人能帮我解决问题吗?
发布于 2020-09-03 19:41:17
您需要具体地添加dll,以便将其解压缩到错误消息的第二行中命名的相对文件夹-- _MEI450082之后的相对文件夹。
如果您不知道如何做到这一点,请阅读文档pyinstaller.readthedocs.io/en/稳定器/
基本上,您需要将类似的内容添加到pyinstaller命令中:
—add-binary “c:\full\path\to\tableauhyperapi.dll;tableauhyperapi/bin”
一旦您完成了其他文件的添加工作,可能还需要添加其他文件。
发布于 2020-11-28 22:55:00
添加barny的答案,并特定于tableau超级API,您将遇到Could not auto-detect Hyper binary: Hyper binary is not in the expected directory AppData\Local\Temp\_MEI176802\tableauhyperapi\bin\hyper
使用--添加-数据来解决这个问题。命令:
pyinstaller --onefile --name ExecName.exe --paths 'c:\full\path\to\site-packages' --add-binary 'c:\full\path\to\site-packages\tableauhyperapi\bin\tableauhyperapi.dll;tableauhyperapi/bin' --add-data 'c:\full\path\to\site-packages\tableauhyperapi\bin\hyper;tableauhyperapi/bin/hyper' Script.py
https://stackoverflow.com/questions/63677724
复制相似问题