1

我设法从这个简单的 python 脚本中使用PyInstaller.exe为 Windows 10 创建了一个文件:

import cv2
print("Hello World!)

我还hook.py用这几行代码创建了一个文件:

sys.path.append(path)
old = os.environ.get('PATH', '')
paths=[path]
paths.append(old)
new = os.pathsep.join(paths)
os.environ['PATH'] = new

为了更新程序的路径。生成的 exe 正在运行:exe 所在的dist目录包含 exe 文件、一组dllpyd文件以及库目录(在本例中为:cv2numpy)。

现在,我需要将 dll 文件和库目录从当前位置移动到我pathhook.py. 正如我在这个答案中所读到的,exe 目录中只维护了几个文件(例如pythonXX.dll文件)。结果是 exe 无法运行并发出此错误:

File "<path_to_minoconda>\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module 
exec(bytecode, module.__dict__)
File "site-packages\cv2\__init__.py", line 5, in <module>
ModuleNotFoundError: No module named 'cv2.cv2'
[1988] Failed to execute script temp

即使我通过钩子指定了路径,程序似乎也无法正确加载 OpenCV 库。运行程序的唯一方法是将 cv2 目录放在 exe 文件的同一文件夹中。重要的是要注意 dll 文件已正确加载(实际上,如果我用 dll 更改文件夹的名称,程序将无法找到它们)。

感谢您的任何建议!

4

0 回答 0