摘要
我刚刚写了一个Python(3.7.2)程序,并使用Pyinstaller(3.4)将其编译为exe。Python文件使用opencv-python(需要numpy)作为依赖项。尽管已经寻找了一段时间,但我在网上看到的解决方案都不适合我。
我没有安装anaconda,也没有我使用的任何库的多个版本(包括Python本身)。
此外,当我在python中运行'from numpy import multiarray'时,即使这样也会打印出一个错误,即它无法进行导入。
我所尝试的
卸载并重新安装numpy和opencv-python
更新numpy到最新版本(1.16)。
在Windows 10和7虚拟机中运行pyinstaller程序,除了我的原生Windows 10(当然,所有依赖项都是通过pip安装的)(一个快速的注意-当我在Win7上运行时,我没有得到任何我在Win10中看到的'lib not found:'错误,但程序仍然无法运行)
所有这些结果都没有影响我收到的错误消息“numpy.core.multiarray failed to import”。
问题
我如何让我的程序编译成一个exe?我愿意使用不同的程序(除了pyinstaller)。
感谢您的评分!
我拥有的数据
以下是在python终端中运行'from numpy import multiarray'时的错误消息:
ImportError: cannot import name 'multiarray' from 'numpy' (C:\Users\name\AppData\Local\Programs\Python\Python37-32\lib\site-packages\numpy\__init__.py)
字符串
这里是完整的错误消息从尝试运行编译的exe
PS C:\Users\name\Downloads\py\dist\SignRecorder> .\SignRecorder.exe
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "SignRecorder.py", line 1, in <module>
File "c:\users\name\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\cv2\__init__.py", line 3, in <module>
ImportError: numpy.core.multiarray failed to import
[15208] Failed to execute script SignRecorder
型
这是pyinstaller的最终构建输出
C:\Users\name\Downloads\py\build\SignRecorder\SignRecorder.exe
19881 INFO: Building EXE from EXE-00.toc completed successfully.
19893 INFO: checking COLLECT
19893 INFO: Building COLLECT because COLLECT-00.toc is non existent
19894 INFO: Building COLLECT COLLECT-00.toc
28366 INFO: Building COLLECT COLLECT-00.toc completed successfully.
型
2条答案
按热度按时间pbossiut1#
感谢Rick M,我能够发现我的版本太新,彼此不能很好地工作。我使用的配置是:
Python 3.5或3.7.2(最新版本为2019年1月23日)
Pyinstaller 3.4
numpy 1.15
5ktev3wc2#
我知道这是旧的,但我最近在Python
3.8.10
,numpy1.24.4
和pyinstaller6.1.0
中遇到了这个问题,所以我希望我可以帮助其他也面临同样问题的人。我的解决方案是在我正在转换为exe的主文件上显式导入numpy(否则,numpy将由我显式导入的另一个库导入)。所以只需在代码中包含:
字符串
那么pyinstaller应该能够检测到它。希望这能有所帮助。
编辑:我无法降级我的numpy,因为我使用的一个库需要该版本的numpy