Сбой UMAP при сборке py2app из-за ошибки libllvmlite.dylib - PullRequest
0 голосов
/ 10 декабря 2018

Я замораживаю GitHub дистрибутива программного обеспечения AltAnalyze, которое мы разрабатываем (https://github.com/nsalomonis/altanalyze). Пакет UMAP-learn зависит от numba и llvmlite, который отлично работает из исходного кода, однако, когда версия дистрибутива создается сpy2app, сбой UMAP со следующей ошибкой:

File "umap/__init__.pyc", line 1, in <module>
File "umap/umap_.pyc", line 19, in <module>
File "numba/__init__.pyc", line 11, in <module>
File "numba/config.pyc", line 19, in <module>
File "llvmlite/binding/__init__.pyc", line 6, in <module>
File "llvmlite/binding/dylib.pyc", line 4, in <module>
File "llvmlite/binding/ffi.pyc", line 128, in <module>
OSError: dlopen(AltAnalyze.app/Contents/Resources/lib/python2.7/site-packages.zip/llvmlite/binding/libllvmlite.dylib, 6): no suitable image found. Did find:AltAnalyze.app/Contents/Resources/lib/python2.7/site-packages.zip/llvmlite/binding/libllvmlite.dylib: stat() failed with errno=20

Я попытался переустановить numba и llvmlite и вызвать различные зависимые функции в модуле, который загружает UMAP:

import numba
import llvmlite; from llvmlite import binding
from llvmlite.binding import *
from llvmlite.binding import ffi
from llvmlite.binding import dylib

НоОшибка сохраняется. Любой совет будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

У нас была похожая проблема.

https://req.thevirtualbrain.org/browse/TVB-2144?focusedCommentId=15056&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15056

Что мы делаем в нашем проекте, у нас есть setup_mac.py , где мы заполняем пакеты , включает, исключает опции для py2app.Каждая запись в списке packages - это не полный путь, а только имя.В этот список мы добавили llvmlite , чтобы исправить именно эту проблему.

0 голосов
/ 12 декабря 2018

Итак, мы смогли найти работу, но это не красиво.Во-первых, мы повторно запустили скрипт установки py2app с явными рамками и параметрами пакетов:

python build_scripts/setup_binary.py py2app --frameworks /Library/Python/2.7/site-packages/llvmlite/binding/libllvmlite.dylib --packages llvmlite,numba

Это больше не выдает ошибку llvmlite при запуске UMAP, но приводит к ошибке:

File "umap/__init__.pyc", line 9 in <module>
File "pkg_resources/__init__.pyc",line 480, in get_distribution
File "pkg_resources/__init__.pyc",line 356, in get_provider
File "pkg_resources/__init__.pyc",line 905, in require
File "pkg_resources/__init__.pyc",line 791, in resolve
DistributionNotFound: The 'umap-learn' distribution was not found and is required by the application

Это особенно странно, поскольку llvmlite импортируется numba из umap, но здесь numba и llvmlite импортируются нормально ... это umap, который не импортирует.Не найдя чистого исправления, мы скопировали каталог библиотеки umap в наше программное обеспечение и вызвали его напрямую ... что сработало.

Мы приветствуем более чистое решение.

...