6

我在 Windows 下用 Python 设计了一个使用 opencv 的小应用程序。我正在尝试创建一个可执行文件,以便任何人都可以安装和使用它,而无需安装 python/opencv/numpy 。. .

我尝试为此使用 py2exe。它实际上创建了一个 .exe 文件,即使我在构建过程中收到警告:

*** copy dlls ***
copying C:\Windows\system32\MSVFW32.dll -> 
...
The following modules appear to be missing
['cv2.cv']

当我尝试使用命令行运行 .exe 文件时,我看到以下消息:

ImportError: numpy.core.multiarray failed to import

我的 setup.py 文件非常简单:

# creating executable here
from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1}},
    console=['facemovie.py'],
    zipfile = None,
)

知道如何解决这个问题吗?这是我第一次想部署,我可能会遗漏一些东西。

谢谢 !

4

4 回答 4

3

我还建议使用PyInstaller。我将它用于我的一个引用 pycrypto 和 twisted 的项目,它就像一个魅力。

于 2012-04-19T21:14:57.557 回答
2

根据这篇文章py2exe没有检测到 ZIP 存档中需要这个模块。我不知道正确的语法,所以你必须检查文档,但你可以尝试:

python setup.py py2exe -p cv2

或者您可以尝试调整setup.py以下内容:

options = {'py2exe': {'bundle_files': 1, 'packages': 'cv2' } },

如果您愿意尝试完全不同的东西,请查看bbfreeze

从 python 脚本创建独立的可执行文件

于 2012-04-19T20:47:41.223 回答
2

谢谢karlphilip,你让我走上了正轨。

我想避免“更改我的软件实用程序”解决方案,所以我坚持使用 py2exe。

实际上,opencv 是正确找到的,但是库本身有一个 numpy 依赖,没有检测到。

所以我的工作解决方案最终是: options = {'py2exe': {'bundle_files': 1, 'includes': 'numpy' } },

最终的可执行文件相当大,但运行平稳。

我没有在另一台电脑上尝试,虽然没有安装软件,所以可能会有惊喜。

谢谢你们的帮助。

于 2012-04-20T23:14:39.190 回答
0

我遇到了同样的问题。我通过将图像文件移动到创建可执行文件的文件夹来解决它。这适用于 py2exe 和 pyinstaller。

于 2017-09-05T15:55:09.677 回答