【问题标题】:Python: DLL load failed: %1 is not a valid Win32 applicationPython:DLL 加载失败:%1 不是有效的 Win32 应用程序
【发布时间】:2015-07-20 13:26:43
【问题描述】:

我已经成功安装了最新版本的 Numpy,并且我使用的是 Python 3.4,但我不理解这个错误:

Traceback (most recent call last):
  File "C:\Python34\LUdecomp.py", line 1, in <module>
    import numpy as np
  File "C:\Python34\lib\site-packages\numpy\__init__.py", line 170, in <module>
    from . import add_newdocs
  File "C:\Python34\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Python34\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Python34\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Python34\lib\site-packages\numpy\core\__init__.py", line 6, in <module>
    from . import multiarray
ImportError: DLL load failed: %1 is not a valid Win32 application.

代码:

import numpy as np
from sys import argv

script, filename = argv

txt = open(filename)

header = txt.readline().split()
inputArray = map(float, txt.readline().split())
txt.close()

inputMat = np.mat(inputArray)
inputMat.reshape(int(header[0]), int(header[1]))
inputMat.shape()

#takes q2data as input
def lu(A):
    #Decomposes a nxn matrix A by PA=LU and returns L, U and P.
    n = len(A)
    L = [[0.0] * n for i in xrange(n)]
    U = [[0.0] * n for i in xrange(n)]

    #Creates the pivoting matrix for m.
    n = len(A)
    ID = [[float(i == j) for i in xrange(n)] for j in xrange(n)]
    for j in xrange(n):
        row = max(xrange(j, n), key=lambda i: abs(A[i][j]))
        if j != row:
            ID[j], ID[row] = ID[row], ID[j]
    p = ID

    #perform matrix multplication
    TA = zip(*A)
    A2 = [[sum(eP*ea for eP,ea in zip(P,a)) for a in TA] for P in p]

    for j in xrange(n):
        L[j, j] = 1.0
        for i in xrange(j+1):
            s1 = sum(U[k, j] * L[i, k] for k in xrange(i))
            U[i, j] = A2[i, j] - s1
        for i in xrange(j, n):
            s2 = sum(U[k, j] * L[i, k] for k in xrange(j))
            L[i, j] = (A2[i, j] - s2) / U[j, j]
    return (L, U, p)

print (lu(inputMat))

【问题讨论】:

    标签: python numpy python-import


    【解决方案1】:

    您已经安装了 64 bit 版本的 numpy 并且正在使用 32 bit 版本的 python,反之亦然。您可以从here 安装预构建的二进制文件

    【讨论】:

    • python.org/downloads/release/python-342 我应该下载 Windows x86 MSI 安装程序吗?我很确定我第一次下载了 Windows x86-64 MSI 安装程序,因为它的名称中有 64
    • @JuniorMint,那你可能安装了32位版本的numpy,你是怎么安装numpy的?
    • 啊,我看到sourceforge.net/projects/numpy/files/NumPy/1.9.2,我选择了win32 .exe,但是我没有看到任何64位的指示符?
    • 我提供的链接里有一个,你可以用pip安装,先把旧的去掉
    【解决方案2】:

    我发现的智能解决方案是简单地进行 pip numpy 升级pip 将卸载错误的 32 或 64 位安装和所需的位安装另外,您可以指定所需的版本。

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 2012-03-05
      • 2013-11-09
      • 2014-01-02
      • 2016-02-01
      • 2013-01-15
      • 2014-01-28
      • 1970-01-01
      • 2020-08-22
      相关资源
      最近更新 更多