Pyinstaller和带有.dylib文件的外部二进制文件:如何在我的macOS软件包中包括graphviz?

时间:2020-06-13 21:21:06

标签: hook pyinstaller dylib

我正在尝试捆绑一个依赖graphviz dotnop可执行文件的应用程序。这些反过来依赖于/usr/local/Cellar/graphviz/2.44.0/lib/libctd.5.dylib之类的库。

将所有这些二进制文件包含在pyinstaller中的正确方法是什么?

我尝试将它们包含在以下不同版本中:

        binaries=[('/usr/local/bin/dot', 'mymoduledir'),
                  ('/usr/local/bin/nop', 'mymoduledir'),
                  ('/usr/local/Cellar/graphviz/*/lib/*.dylib', '.'),
                  ('/usr/local/Cellar/graphviz/*/lib/graphviz/*.dylib', '.'),

我确认dylib显示在dist/Alpha.app/Contents/MacOS/中,但是由于某些原因,在运行该应用程序时找不到。

将发生的一个错误如下:

Traceback (most recent call last):
  File "pygraphviz/graphviz.py", line 18, in swig_import_helper
  File "imp.py", line 296, in find_module
ImportError: No module named '_graphviz'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "networkx/drawing/nx_agraph.py", line 133, in to_agraph
  File "/Users/vagrant/env_alpha/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "pygraphviz/__init__.py", line 58, in <module>
  File "/Users/vagrant/env_alpha/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "pygraphviz/agraph.py", line 22, in <module>
  File "/Users/vagrant/env_alpha/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
    exec(bytecode, module.__dict__)
  File "pygraphviz/graphviz.py", line 28, in <module>
  File "pygraphviz/graphviz.py", line 20, in swig_import_helper
ImportError: dlopen(/Users/vagrant/alpha/dist/Alpha.app/Contents/MacOS/_graphviz.cpython-37m-darwin.so, 2): Library not loaded: @loader_path/libcdt.5.dylib
  Referenced from: /Users/vagrant/alpha/dist/Alpha.app/Contents/MacOS/_graphviz.cpython-37m-darwin.so
  Reason: image not found

0 个答案:

没有答案