【发布时间】:2019-02-06 19:05:47
【问题描述】:
我使用 PyInstaller 从 Python 脚本构建了一个 EXE 文件,使用
pyinstaller --onefile myscript.py
我使用的包:
pandas, numpy, imutils, opencv, logging, os, random, json, string, csv, datetime, uuid
EXE 在我的电脑上运行良好。但是,当我在另一台 PC 上尝试时,我会收到此屏幕截图中显示的错误:https://www.screencast.com/t/msZrURL4v
知道问题出在哪里吗?
【问题讨论】:
-
据我所知,python 有两种不同的依赖类型。一个是您可以包含一个全局安装在您的计算机上的库,它允许您为您的 PC 上的不同 python 代码保留一个库的副本。第二个是你在你的仓库中保留一个库的副本,所以当你创建一个可执行文件时,它不需要运行 pc 来安装所有这些依赖项。
-
我的意见“您尝试将内置/系统范围的库称为外部库”。
Portable和built-in完全不同的东西。一些包有performance问题(所以不能直接移植/共享到另一个应用程序),你能想象“你的应用程序如何处理所有导入模块上的 sym-links/mem-alloc 吗?”。如果你没有性能问题,可以使用通用的DLL库。如果没有任何系统分析,您将无法在另一台计算机上运行您的程序。可能产生问题的库:pandas、numpy、imutils、opencv -
您可以通过使用 ctypes 来克服这些问题(导致非常严重的性能损失)。您可以创建一个 DLL 并将其插入到所有非工作模块中。我知道这很烦人,但我想不出另一种方法来最小化依赖关系。
-
@dsgdfg 感谢您的回复。你能准确地告诉我我需要做什么吗?我不知道你刚才说的该怎么做。
标签: python pyinstaller