Python 使用Pyinstaller发布打包

Python 使用Pyinstaller发布打包,python,python-3.6,pyinstaller,Python,Python 3.6,Pyinstaller,对于所有专家,我们一直在开发一个包含以下模块的应用程序: opencv 努比 熊猫 跺脚 nltk bs4 皮尔 请求 还有一些不是pythons标准库的一部分。希望将其打包到单个可执行文件中。因此,我们尝试使用pyinstaller。执行时也是如此-它会建立分发文件夹-但无法执行。它抛出以下错误: Traceback (most recent call last): File "app.py", line 6, in <module> File "/root/Projects/

对于所有专家,我们一直在开发一个包含以下模块的应用程序:

  • opencv
  • 努比
  • 熊猫
  • 跺脚
  • nltk
  • bs4
  • 皮尔
  • 请求
还有一些不是pythons标准库的一部分。希望将其打包到单个可执行文件中。因此,我们尝试使用pyinstaller。执行时也是如此-它会建立分发文件夹-但无法执行。它抛出以下错误:

Traceback (most recent call last):
File "app.py", line 6, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "ProcessManager.py", line 7, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "ProcessWorker.py", line 16, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/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
[3502] Failed to execute script app

有人能帮我做同样的事吗。。如何解决此问题?

导入错误:numpy.core.multiarray导入失败错误因导致与numpy尝试导入特定于平台的共享库相关的崩溃而臭名昭著。几乎总是由于试图导入错误的版本或根本找不到这些库而导致的

您打包的可执行文件可能正在尝试从包外部导入某些框架,并且遇到某种版本不匹配的情况。最有可能的情况是,您也在使用某种虚拟环境,如conda或VirtualEnvironment

如果无法使用机器,很难查明问题所在。我将尝试以下方式收集有关该问题的进一步信息:

  • 尝试在另一台没有安装python或至少没有安装numpy的机器上运行可执行文件,看看会发生什么

  • 尝试在只安装了一个版本的numpy的计算机上重新打包应用程序

  • 通过运行
    python-c'import-numpy,仔细调查实际导入了哪个版本的numpy以及从哪个版本导入的numpy;打印(基本版本);打印(numpy.\uuuu file\uuuu)
    在环境中,您将在中以及在可执行文件本身中创建可执行文件

  • 最后一步可以通过

    import numpy
    import numpy
    print(numpy.__version__)
    print(numpy.__file__)
    

    在你的app.py中作为第一行(即在崩溃前查看输出)

    感谢所有帮助你的人。我也在其他地方发过帖子——上帝保佑——确实有人想出了一个答案。这对我来说是成功的。他建议的是-我可能有2个或更多不同的numpy安装在不同版本的机器上。一个用于2.7,另一个用于3.6,依此类推。他建议我移除其中一个,然后检查是否一切正常。这确实有点道理——因此我提前清理了2.7/3.6中的所有numpy以及其他根据需要手动安装的项目包。发布-我刚刚创建了一个虚拟机,并重新安装了所需的软件包(以及numpy)

    此外,请确保pyinstaller在构建时将numpy.core.multiarray作为隐藏导入查找。(第二步——我过去已经试过了)

    说什么-事情对我来说很重要。它不再给我它曾经因为这个而屈服的错误。现在我正在解决其他问题——但这种方法/机制肯定对我有效


    谢谢你们再次帮助我。我爱你们所有人。

    您想在哪里运行可执行文件?这是您运行pyinstaller的同一台计算机吗?或者它是另一台机器?是的-尝试在运行pyinstaller的同一台机器上运行可执行文件。这可能不是pyinstaller问题,而是numpy问题。看见
    import numpy
    import numpy
    print(numpy.__version__)
    print(numpy.__file__)