首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pysintaller exe文件不运行,抛出找不到超级API二进制目录错误。

pysintaller exe文件不运行,抛出找不到超级API二进制目录错误。
EN

Stack Overflow用户
提问于 2020-08-31 20:25:40
回答 2查看 350关注 0票数 1

我创建了一个python脚本,它使用创建一个Tableau (.hyper)提取文件。主要基于Tableau提供的示例脚本。

我试着用pyinstaller来打包这个。Pyinstaller“成功”创建了exe,但当我尝试运行exe时,会得到以下错误:

代码语言:javascript
运行
复制
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命令中,但它仍然引发上述错误。

有人能帮我解决问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-03 19:41:17

您需要具体地添加dll,以便将其解压缩到错误消息的第二行中命名的相对文件夹-- _MEI450082之后的相对文件夹。

如果您不知道如何做到这一点,请阅读文档pyinstaller.readthedocs.io/en/稳定器/

基本上,您需要将类似的内容添加到pyinstaller命令中:

代码语言:javascript
运行
复制
—add-binary “c:\full\path\to\tableauhyperapi.dll;tableauhyperapi/bin”

一旦您完成了其他文件的添加工作,可能还需要添加其他文件。

票数 0
EN

Stack Overflow用户

发布于 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

使用--添加-数据来解决这个问题。命令:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63677724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档