我有一个 Python 3.5 64 位程序(tensorflow for Windows 所需),其中使用了 OpenCV。我正在使用 pyinstaller 进行分发。
该程序是在 Windows 10 上构建的。
/c/Python35/Scripts/pyinstaller -c DeepMeerkat.spec
在我的电脑上,.exe文件可以完美地构建和运行。但在任何其他非Windows 10的计算机上
上面的 "On" 是指 "关于" 或 "就......而言" 的引导词,没有独立的翻译。
import cv2
返回
导入错误:DLL 加载失败:找不到指定的模块。
我在pyInstaller线程上看到了大量关于这个问题的讨论,但是我不知道如何实践。Dependency walker 显示我缺少一些 DLLs。
api-ms-win-crt-**.dll
好的,从pyInstaller的帖子中,我知道这些DLL文件存在。
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs
根据体系结构,在多个子文件夹下。
我尝试在我的.spec文件中添加内容
pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/"],
或针对我的特定架构
pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm"],
这正是我认为所建议的这里
"安装Windows软件开发工具包(SDK)以及在.spec文件中添加所需的DLL,参见上述链接“使用通用CRT分发软件”,第6点。
但这并没有产生任何效果。我会得到数百个错误,例如:
121472 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python35\DLLs\_ssl.pyd
但是我可以看到这里的 DLL
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\arm
所以,我字面上地后来复制了整个文件夹
cp -r "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/" dist/Lib/
但是如何将这些与.exe
连接起来尚不清楚。显然,事先让pyInstaller知道更好。
我也尝试了
/c/Python35/Scripts/pyinstaller --path "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm" -c DeepMeerkat.spec
但它仍然找不到它们。
我也尝试将该文件夹添加到PATH中。 有任何想法吗?