我正在冻结我们开发的软件AltAnalyze(https://github.com/nsalomonis/altanalyze)的GitHub发行版。 UMAP学习软件包取决于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
但是错误仍然存在。任何建议将不胜感激。
答案 0 :(得分:1)
我们遇到了类似的问题。
我们在项目中所做的事情,我们有一个 setup_mac.py ,在其中填充py2app的包, includes,excludes 选项。 packages 列表中的每个条目都不是完整路径,而只是一个名称。在此列表中,我们添加了 llvmlite ,以完全解决此问题。
答案 1 :(得分:0)
因此,我们能够找到解决方法,但是效果并不理想。 首先,我们使用显式框架和程序包选项重新运行py2app设置脚本:
python build_scripts/setup_binary.py py2app --frameworks /Library/Python/2.7/site-packages/llvmlite/binding/libllvmlite.dylib --packages llvmlite,numba
这在运行UMAP时不再抛出llvmlite错误,但失败:
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库目录复制到了我们的软件中并直接调用它。
我们欢迎更清洁的解决方案。