python - 尝试运行 pyinstaller 创建的 .exe 文件时“执行脚本失败”
问题描述
我正在尝试使用 pyinstaller 将我的 python 代码编译为 .exe 文件。使用以下代码会生成一个没有错误消息的可用 .exe 文件:
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
window.show()
print('app loaded')
sys.exit(app.exec_())
但是,只要我添加:
from scipy.integrate import solve_ivp
对于导入语句,我收到错误消息“无法执行脚本”。在命令窗口中执行 pyinstaller 期间,我还看到以下内容:“警告:无法找到 Qt5 翻译”以及包括 Matplotlib 模块在内的几个警告。我尝试将PyQt5\Qt\plugins\platforms
文件夹复制到包含 .exe 文件的文件夹中,并QT_PLUGIN_PATH
按照另一个问题中的建议添加 Anaconda3\Library\plugins 作为环境变量,但是两种建议的解决方案都不起作用。
当我尝试从命令窗口执行程序时,我收到错误消息:“ImportError: DLL load failed”
任何有关此问题的帮助将不胜感激。
编辑:
我尝试了 oetzi 的提议,并专门为我的项目创建了一个新的 anaconda 环境。我安装了 scipy、numpy、matplotlib 和 pyqt 模块,并在那个新环境中安装了 pyinstaller。这次我在 Anaconda Prompt 中输入了命令。同样,没有 scipy.integrate.solve_ivp 它可以正常工作。有了它,当我尝试运行 pyinstaller 时出现以下错误。
18881 WARNING: Cannot read QLibraryInfo output: raised Expecting value: line 1 column 1 (char 0) when decoding:
False
Traceback (most recent call last):
File "C:\Users\domin\Anaconda3\envs\testenv\Scripts\pyinstaller-script.py", line 10, in <module>
sys.exit(run())
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\__main__.py", line 111, in run
run_build(pyi_config, spec_file, **vars(args))
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\build_main.py", line 844, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\build_main.py", line 791, in build
exec(code, spec_namespace)
File "C:\Users\domin\polybox\ETH\Master Thesis\PycharmProjects\Perfusion Simulation\Pyinstaller\test\test.spec", line 17, in <module>
noarchive=False)
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\build_main.py", line 243, in __init__
self.__postinit__()
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__
self.assemble()
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\build_main.py", line 502, in assemble
module_hook.post_graph()
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\imphook.py", line 410, in post_graph
self._load_hook_module()
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\building\imphook.py", line 377, in _load_hook_module
self.hook_module_name, self.hook_filename)
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\compat.py", line 793, in importlib_load_source
return mod_loader.load_module()
File "<frozen importlib._bootstrap_external>", line 407, in _check_name_wrapper
File "<frozen importlib._bootstrap_external>", line 907, in load_module
File "<frozen importlib._bootstrap_external>", line 732, in load_module
File "<frozen importlib._bootstrap>", line 265, in _load_module_shim
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\hooks\hook-PySide2.py", line 18, in <module>
collect_system_data_files(pyside2_library_info.location['PrefixPath'],
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 87, in __getattr__
return getattr(self, name)
File "C:\Users\domin\Anaconda3\envs\testenv\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 89, in __getattr__
raise AttributeError
AttributeError
解决方案
好的,我现在所做的只是完全卸载并再次安装所有内容。之后我只添加了 scipy、numpy、matplotlib、pyqt5 和 pyinstaller 所需的模块。之后,一切正常。我的猜测是,因为我同时安装了 PyQt5 和 PyQt4,所以它与模块混淆了。现在我只安装了 PyQt5,一切正常。
推荐阅读
- c# - 如何使用适用于 Windows、Linux 和 macOS 的 .NET Core 3.1 测量进程的 CPU 使用率和内存?
- java - HashSet 重新排序信息,我该怎么做才能不被重新排序?
- python-3.x - Git 子模块:git@github.com:权限被拒绝(公钥)。致命:无法从远程存储库中读取
- c++ - C++ - 当 x = 1.4 和 y = 5.8 时,算法检查 (x * y + x + y) / (xy) 的值
- android - 你能依赖从多行插入返回的 Android 房间 ID 的顺序吗
- c# - C# 编译 .net-core 3.1 可移植
- vba - 从一批 MS-Access 数据库中读取表元数据
- oracle - 如何在 ODI 12c 的映射中使用 Oracle 查询
- quarkus - 如何在 Quarkus 中配置多个外部 «application.properties»?
- sql - 正确处理 Microsoft SQL Server 上的循环级联/设置 null 功能