2017-09-05 18 views
2

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と最新の開発者を試しました。

誰でも私がこのエラーを理解し解決するのを助けることができますか?

答えて

0

pyinstallerを使用して作成した私のアプリケーションを実行しようとすると、同じエラー(MacOS 10.11.6を使用)が発生しました。

pip install opencv-python == 3.1.0.4 
pip install pyinstaller == 3.3.1 

これは満足のいく解決策ではありませんが、あなたはまだこの問題に苦労している場合、それは試してみる価値かもしれ:私は成功し、次のバージョンにOpenCVのとpyInstallerのを廃止することで、私の問題を解決することができました。

関連する問題