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を使用しており、同じOSを実行している別のクリーンインストールMacBookでエラーを再現しています。私はPython 3.5.4、PyQt 5.9.1、OpenCV 3.3.0を使用しています。 PyInstallerの場合は、3.2.1と最新の開発者を試しました。
誰でも私がこのエラーを理解し解決するのを助けることができますか?