Приложение, скомпилированное с Pyinstaller, не может запускаться на других компьютерах (OSError: dlopen () не удалось загрузить библиотеку) - PullRequest
0 голосов
/ 24 октября 2018

Я разрабатываю небольшое приложение для MacOS с Python 3.7.Я установил питон с Homebrew.Я скомпилировал приложение с помощью PyInstaller.Приложение использует внешние библиотеки, такие как cairosvg и python-docx, которые PyInstaller, похоже, не нравятся.Мне удалось заставить его работать на моей машине, переместив папки cairosvg и docx из соответствующих папок с пакетами сайта в дистрибутив приложения.

Когда я запускаю приложение на своей машине (MacOS High Sierra 10.13.6), это работает.Когда мой клиент запускает его на своем компьютере (MacOS High Sierra 10.13.5), происходит сбой.Я попросил их запустить его в терминале, чтобы получить сообщения об ошибках, вот что они получают:

Last login: Sat Oct 6 07:05:44 on console
Andrews-MacBook-Pro-3:~ perryand$ /Users/perryand/Downloads/PGN\ to\ docx/dist/main.app/Contents/MacOS/main ; exit;
Traceback (most recent call last):
File "main.py", line 14, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "cairosvg/init.py", line 41, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "cairosvg/surface.py", line 24, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "cairocffi/init.py", line 41, in <module>
File "cairocffi/init.py", line 38, in dlopen
OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2
[15441] Failed to execute script main
logout
Saving session...
...saving history...truncating history files...
...completed.
Deleting expired sessions...none found.

[Process completed]

Кажется, что библиотека cairosvg не загружается.У меня не было этой ошибки на моей машине.Есть ли что-то, чего я не включаю в дистрибутив, что очень важно для Каира?Насколько я понимаю, PyInstaller не копирует нестандартные файлы, но тогда он не должен работать и на моей машине.Я протестировал его в virtualenv, но ничего не установил, он работал и не выдавал ошибок.Я немного растерялся.

...