无法捆绑的OpenCV和PyQt5
问题描述:
我希望捆绑一些Python代码到一个分布式应用程序(.app文件),但有麻烦越来越OpenCV的和 PyQt5到应用程序中。 无论,在另一方面,做工精细。无法捆绑的OpenCV和PyQt5
我已经剥夺我所有的代码和问题仍然存在。请参见下面的代码示例:
# Works absolutely fine
import cv2
print("Hi there opencv v{0} user!".format(cv2.__version__))
# Works absolutely fine
from PyQt5.QtCore import *
print("Qt version {0}".format(QT_VERSION_STR))
# Does not work, see below
import cv2
from PyQt5.QtCore import *
print("Qt version {0}".format(QT_VERSION_STR))
print("opencv version {0}".format(cv2.__version__))
并以“不行”,我的意思是它捆绑没有错误(python3.5 -m pyinstaller samplecode.py
),但不能执行。相反,该程序退出并返回一个错误:
Traceback (most recent call last):
File "/Users/*****/build/test.py", line 1, in <module>
import cv2
File "/Users/*****/build/PyInstaller/loader/pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2/__init__.py", line 9, in <module>
from .cv2 import *
File "/Users/*****/build/PyInstaller/loader/pyimod03_importers.py", line 714, in load_module
module = loader.load_module(fullname)
ImportError: dlopen(/Users/*****/build/test/dist/test/cv2.cv2.so, 2): Symbol not found: __ZN10QByteArray11shared_nullE
Referenced from: /Users/*****/build/test/dist/test/QtTest
Expected in: /Users/*****/build/test/dist/test/QtCore
in /Users/*****/build/test/dist/test/QtTest
[20049] Failed to execute script test
星星只是替换我的个人和项目文件夹名称。
我试图手动复制cv2.so文件,重命名它cv2.cv2.so并且将其放置在文件夹中。这产生了一个稍微不同的错误:
Traceback (most recent call last):
File "/Users/*****/build/test.py", line 1, in <module>
import cv2
File "/Users/*****/build/PyInstaller/loader/pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2/__init__.py", line 9, in <module>
from .cv2 import *
File "/Users/*****/build/PyInstaller/loader/pyimod03_importers.py", line 714, in load_module
module = loader.load_module(fullname)
ImportError: dlopen(/Users/*****/build/test/dist/test/cv2.cv2.so, 2): Library not loaded: @loader_path/.dylibs/QtGui
Referenced from: /Users/*****/build/test/dist/test/cv2.cv2.so
Reason: image not found
我也试过cx_freeze和py2app但不能让这些来工作的。我最远的有pyinstaller,所以我更喜欢使用这个发展似乎是最活跃的。
我运行MacOS的10.12,并纷纷转载运行同一个操作系统上的另一个全新安装的MacBook错误。我使用Python 3.5.4,5.9.1 PyQt的,OpenCV的3.3.0。对于PyInstaller我试过3.2.1和最新开发。
谁能帮助我了解和解决这个错误?
答
我遇到(使用MacOS的10.11.6)试图执行我的应用程序,这是我使用pyinstaller还内置当这些同样的错误。我能够通过自嘲的OpenCV和pyinstaller以下版本成功地解决我的问题:
pip install opencv-python == 3.1.0.4
pip install pyinstaller == 3.3.1
这不是一个令人满意的解决方案,但它可能是值得一试,如果你还在这个问题挣扎。