- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为我的 python 脚本 dungeon.py
构建 exe 后,当 PyBearLibTerminal.py
(我的程序导入的脚本)尝试加载 DLL 时出现错误BearLibTerminal.dll
。该脚本运行正常,只是运行导致错误的可执行文件。运行可执行文件时报告的错误是
[3464] Failed to execute script dungeon
Traceback (most recent call last):
File "dungeon.py", line 2, in <module>
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1129, in _exec
File "C:\Program Files\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "PyBearLibTerminal.py", line 50, in <module>
RuntimeError: BearLibTerminal library cannot be loaded.
这是导致错误的 PyBearLibTerminal.py
文件的开头。
import sys, ctypes, numbers, os
_version3 = sys.version_info >= (3, 0)
_library = None
_possible_library_names = [
'BearLibTerminal.dll', # Generic Windows DLL
'./libBearLibTerminal.so', # Local Linux SO
'./libBearLibTerminal.dylib', # Local OS X dylib
'./BearLibTerminal.so', # Local Linux SO w/o prefix
'libBearLibTerminal.so', # System Linux SO
'libBearLibTerminal.dylib', # System OS X dylib
'BearLibTerminal.so' # System Linux SO w/o prefix
]
ctypes.windll.kernel32.SetDllDirectoryW(os.getcwd().replace('\\', '/'))
for name in _possible_library_names:
try:
_library = ctypes.CDLL(name)
break
except OSError:
continue
if _library is None:
raise RuntimeError("BearLibTerminal library cannot be loaded.")
最后,这是我的 dungeon.spec
文件:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['dungeon.py'],
pathex=['C:\\Users\\Brett\\Documents\\Projects\\Spark'],
binaries=[('BearLibTerminal.dll', '.')],
datas=[('enemies.json', '.'), ('items.json', '.'), ('materials.json', '.'), ('names.json', '.'), ('unifont-8.0.01.ttf', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='dungeon',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='dungeon')
最佳答案
1) 检查 dist/文件夹(或 .exe 所在的任何文件夹)以确保 BearLibTerminal.dll 存在并可供访问。如果 .exe 不存在,您的 .exe 将不会运行
2) 接下来检查依赖关系。不一定是找不到BearLibTerminal.dll,而是找不到BearLibTerminal.dll所依赖的东西。如果您的计算机上安装了 Visual Studio,请使用 dumpbin 找出您的 DLL 所依赖的内容。 (dumpbin安装在这里C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe)
dumpbin /DEPENDENTS your.dll
这将列出 BearLibTerminal.dll 所依赖的 DLL。如果适用,请确保它们与您的 exe 包含在同一目录中(例如,kernel32.dll 不需要位于该目录中)
3) 如果您没有 Visual Studio 或 dumpbin,请下载 http://www.dependencywalker.com/它会完成同样的事情
4) 如果您确定您的 DLL 及其依赖的 DLL 都已被考虑在内,请检查您的规范文件以确保其格式正确。如果运行 pyinstaller 时显示一堆警告,则可能会导致问题。特别是在 Windows 10 上(它们运行不佳:https://github.com/pyinstaller/pyinstaller/issues/1566)
5) 如果 BearLibTerminal.dll 是您自己编译的 dll,请确保它是在 Release模式下构建的,并且您的 C/C++ 代码生成运行时库是/MT(多线程)
6) 确保您也拥有最新版本的 pyinstaller。
信息量很大,但希望能帮助解决您的问题。我自己也在处理同样的问题。
关于python - Pyinstaller 未加载 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46499068/
我需要在 pyinstaller“onefile”可执行文件中包含一个 DLL 和一个文本文件。我可以只添加 DLL,但如果我尝试指定这两个文件,pyinstaller 会提示。我宁愿使用命令行选项(
我编写了一个 python 应用程序,它使用 pdfkit 包来打印 PDF。我正在使用 pyinstaller 在 Ubuntu 上构建此应用程序的可执行文件。 pdfkit 依赖于使用 sudo
我想弄清楚为什么 PyInstaller 一直包含 PyQt 的 Windows dll 文件,即使我的应用程序不使用 PyQt。所以,我想知道如何确定 为什么 PyInstaller 认为 PyQt
我在我的 mac osx sierra 下安装了 2 个 python 版本: python 3.5 python 2.7 我用这个命令在python3.5下安装了pyinstaller: pytho
所以,标题基本上涵盖了我的问题。我已经使用 virtualenv 创建了一个项目,例如我必须 source ./env/bin/activate 运行我的脚本。 当我尝试使用以下命令创建可执行文件时:
大约一个月前,我使用 PyInstaller 和 Inno Setup 为我的 Python 3 脚本生成了一个安装程序。我的 AVG Business Edition AntiVirus 刚刚开始提
我正在尝试使用 pyinstaller 制作可执行文件,方法如下: pyinstaller -F --add-binary="sometool.exe:."myapp.py 构建工作正常。但是,如果我
我想要卡住一个 Python 应用程序,作为其功能之一,它能够使用 PyInstaller 生成卡住的 Python 应用程序。这是一个最小的应用程序,显示了我想要实现的目标: import PyIn
运行 pyinstaller myfile.spec 下面的回溯 Traceback (most recent call last): File "/usr/local/bin/pyinstall
首先, native 运行 Fedora 13,PyInstaller 版本为 1.5.1 我在生成规范时确实使用了 --onefile 。 从 Python 解释器中运行“import atexit
我想使用以下命令安装 pyinstaller 模块: pip install pyinstaller 但我总是得到以下错误: 最佳答案 我尝试了一切,但最终我找到了解决方案。 您只需将 pip 从 1
我在 Windows 上运行 Python 3.5.3,并尝试使用 pip 安装 Pyinstaller。它似乎工作 - 没有错误或任何东西,就像 pip 一样非常简单。 我试过 import -m
我已经使用 pyinstaller 在 Windows 10 64 位上从 python 脚本创建了一个 exe。我如何设置 exe 以便它在我的另一台装有 Windows 8 32 位的机器上运行。
我使用以下命令安装了最新版本的 PyInstaller:pip install https://github.com/pyinstaller/pyinstaller/archive/develop.z
我用 python 编写程序来打开路径给出的一些可执行文件。我使用: os.startfile(路径) 启动程序。当我在 IDLE 中运行 script.py 时,它工作正常,但是当我使用 pyins
我在 Python 中构建了一个关键字搜索工具,然后使用 Pyinstaller 将其转换为 .exe 格式,因此我工作场所的人无需安装 Python 即可使用它。 我已通过电子邮件将其以 RAR 文
我遇到了一个问题。我正在使用 pyinstaller 将代码导出到 .exe。代码包括 tkinter、PIL 和 keyboard 模块。软件在我使用 Python 的 PC 上运行完美,而在没有
我正在尝试从我的 python 项目中创建一个可执行文件。我正在使用函数“make_executable”构建可执行文件。 运行添加数据的命令会引发如下错误:pyinstaller: 错误: 无法识别
我想从 .py 创建 .exe 文件。如果我运行 .py 文件,它运行良好,我没有问题。但是当我运行 pyinstaller 创建的 .exe 文件时,我无法在命令行中输入(键入)任何内容。 我已经尝
我有一个小应用程序,我正在尝试针对 Windows 机器构建它。该程序创建一个 OpenVPN 连接。如果我构建程序并运行它,它首先会打开一个控制台作为程序输出。如果我通过 -w pyinstalle
我是一名优秀的程序员,十分优秀!