【问题标题】:Py2Exe, [Errno 2] No such file or directory: 'numpy-atlas.dll'Py2Exe,[Errno 2] 没有这样的文件或目录:'numpy-atlas.dll'
【发布时间】:2016-03-24 01:33:03
【问题描述】:

我在我的程序中包含了 matplotlib,我在 google 上搜索了 numpy_atlas.dll,我似乎是地球上唯一遇到这个问题的人。

setup.py

from setuptools import setup
import py2exe

setup(console=['EulerMethod.py'])

运行 Py2Exe 报错

C:\(..obmitted..)>python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
......
...obmitted...
......
*** finding dlls needed ***
error: [Errno 2] No such file or directory: 'numpy-atlas.dll'

【问题讨论】:

  • 我重新安装python时出现了这个问题。在此之前,我的脚本运行良好。我在 C:\Anaconda2\Lib\site-packages\numpy\core 找到了该文件,但 py2exe 由于某种原因找不到它。以前,我使用的是 python(x,y),但我切换到了 Anaconda(仍然是 python 2.7.x)。

标签: python numpy matplotlib py2exe


【解决方案1】:

这对我有用。 我找到了 dll:C:\Python27\Lib\site-packages\numpy\core\numpy-atlas.dll 并将其复制到具有 setup.py 的同一文件夹中

【讨论】:

  • 无法确认,但听起来合法。
  • 可以确认。接受的答案不起作用。这个做到了。升级到 numpy 1.11 后我遇到了这个错误。
  • Atlas 不是 numpy 的要求,因此这不适用于所有用户。
  • @bremen_matt 该问题明确表示缺少 numpy_atlas,因此答案是正确的。
【解决方案2】:

我遇到了同样的问题。经过一些测试,将numpy.core 目录附加到sys.path 似乎可以工作。

from distutils.core import setup
import py2exe

import numpy
import os
import sys

# add any numpy directory containing a dll file to sys.path
def numpy_dll_paths_fix():
    paths = set()
    np_path = numpy.__path__[0]
    for dirpath, _, filenames in os.walk(np_path):
        for item in filenames:
            if item.endswith('.dll'):
                paths.add(dirpath)

    sys.path.append(*list(paths))

numpy_dll_paths_fix()
setup(...)

【讨论】:

  • 也为我工作。
  • 为我工作了 3!
  • 这很好用,优点是不需要手动将 dll 复制到应用程序文件夹。
【解决方案3】:

听起来py2exe找不到dll。以下脚本将使 py2exe 安静:

distutils.core.setup(
options = {
    "py2exe": {
        "dll_excludes": ["MSVCP90.dll"]
    }
},
...

)

您仍然需要确保 dll 在用户的机器上。我相信 numpy-atlas.dll 是 matplot 依赖项之一。

如果其他一切都失败了,也可以考虑使用 PyInstaller。

【讨论】:

  • 你知道我如何捆绑 exe 以便包含所有娃娃依赖项吗?
  • .dll 应该位于可执行文件旁边的 dist 目录中。
  • 我还没有尝试过您的解决方案,如果可行,我会确保尝试并选择您的答案。
  • 我不知道你的答案是否有效,但 PyInstaller 绝对很棒。也许将其添加到您的答案中,我会选择它。
  • 我刚收到那个错误,但我的设置脚本中已经有这一行:"dll_excludes": ["MSVCP90.dll"]。令人沮丧的是,似乎每次我重新访问这个脚本一段时间后,它都会出现另一个随机丢失的 dll,尽管我之前能够在没有 numpy-atlas.dll 的情况下运行 py2exe 并且我没有对我的应用程序的依赖项。有没有其他人有类似的经历?我之前排除了 PyInstaller,因为它不能很好地与 Canopy Python 配合使用,但也许我应该再试一次......
猜你喜欢
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2015-11-19
  • 2013-03-21
  • 2015-04-09
  • 2019-05-26
相关资源
最近更新 更多