从 cx_freeze 创建 exe 时出现动态共享库错误

Dynamic Shared Library error when creating exe from cx_freeze

我有一个使用 OpenCV 的 python 文件 library.I 希望将其作为可执行文件。

遇到这个cx_freeze

示例:

ABC.py(使用opencv库的文件)

setup.py的内容如下

from cx_Freeze import setup, Executable

setup(  name = "ABC",
        version = "0.1",
        description = "Testing",
        executables = [Executable("ABC.py")],
)

我在终端中运行这个命令

python setup.py install

显示此错误消息后正在停止

copying /Users/name/.virtualenvs/test/lib/python3.6/site-packages/cv2.so -> build/exe.macosx-10.12-x86_64-3.6/lib/cv2.so
copying /Users/name/.virtualenvs/test/bin/../lib/libopencv_reg.3.3.dylib -> build/exe.macosx-10.12-x86_64-3.6/libopencv_reg.3.3.dylib
error: [Errno 2] No such file or directory: '/Users/name/.virtualenvs/test/bin/../lib/libopencv_reg.3.3.dylib'

我从错误消息中得知 libopencv_reg.3.3.dylib 未找到。

我 运行 在 python 虚拟环境中。 这是我的bash_profile内容

#Homebrew
export PATH=/usr/local/bin:$PATH

#export WORKON_HOME=$HOME/.virtualenvs

# Virtualenv/VirtualenvWrapper
source /usr/local/bin/virtualenvwrapper.sh
#export PROJECT_HOME=$HOME/Devel
#export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
#export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
#export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'

我很困惑,请帮我解决这个问题。 指导真的很有帮助,如果这个问题可以在其他地方发布让我知道而不是投反对票。

你能在你的文件系统中搜索丢失的文件吗?当你找到它时,你可以设置 PERL5LIB 或使用 -I 开关将位置设置到 perl 路径

perl library path

在 OpenCV 论坛上分享了相同内容

这是我得到的回复 there

看起来我们构建 OpenCV 的方式使得其他共享对象 (.so) 文件不依赖。