【问题标题】:How do I install a 32-bit version of numpy如何安装 32 位版本的 numpy
【发布时间】:2012-07-01 04:16:39
【问题描述】:

经过一番努力,我终于得到了 matplotlib 及其所有依赖项,可以在 Snow Leopard 10.6.8 上和谐地工作。我现在想稍微调整一下它的配置,以允许我使用 32 位安装的 wxPython 作为它的后端。问题是当我使用 Python 2.7.3(python.org 版本)的 32 位安装时,不会导入 numpy(matplotlib 需要)。谷歌搜索一个小时左右让我相信,通过指定 CFLAGS 和 LDFLAGS 与 setup.py 结合使用,可以将 numpy 构建和安装为 32 位。我不清楚这些标志的作用,毫不奇怪我没有成功使用它们。这是我在下载的 numpy 文件夹中尝试的:

$ CLFLAGS=-m32 LDFLAGS=-m32 python setup.py install

我收到一些错误消息,但 numpy 的 64 位兼容版本确实到达了我的 sitepackages 文件夹。但是,当我使用 32 位解释器时,出现错误:

ImportError: dynamic module does not define init function (initmultiarray)

我认为我可以构建 32 位 numpy 是否正确?

【问题讨论】:

    标签: python numpy matplotlib osx-snow-leopard 32bit-64bit


    【解决方案1】:

    您可以尝试使用免费版的 EPD(如果您在学术界,完整版是免费的):

    http://www.enthought.com/products/epd_free.php/

    这有一个 32 位版本的 mac,包含所有关键的科学堆栈包,包括 scipy、numpy 和 matplotlib。

    【讨论】:

    • 在过去的某个时候,我认为我确实尝试过使用 EPD 版本,并且我还尝试使用 macports 安装所有这些软件包。我不记得遇到过任何问题,但尝试单独执行它们的部分原因是为了更多地了解在 Unix/OS X 上安装的具体细节
    【解决方案2】:

    我只是花了几天的时间环顾四周,把头发拉了出来,所以我想我会在这里为我的发现做出贡献……

    我遇到了同样的问题,但只设置标志对我不起作用(但这确实需要)......在我的情况下,我有一个单独的 32 位版本的 python,所以我做了:

    CFLAGS="-m32" LDFLAGS="-m32" /util/linux32/bin/python setup.py install --prefix=/util/science/gfortran-4.4.6/linux32/

    (不用担心我在前缀中的 gfortran 东西,幸运的是我不得不测试不同的编译器.. ;))

    但是我会得到一个错误,最后一行会说: "RuntimeError: Broken toolchain: cannot link a simple C program"

    但如果我向上滚动,我有:

    gcc -pthread _configtest.o -o _configtest

    _configtest.o:无法读取符号:文件格式错误

    collect2: ld 返回 1 个退出状态

    _configtest.o:无法读取符号:文件格式错误

    collect2: ld 返回 1 个退出状态

    失败。

    删除:_configtest.c _configtest.o

    如您所见,gcc 调用中没有“-m32”标志...

    我追踪到 distutils install ;对我来说: /util/linux32/lib/python2.7/distutils/ccompiler.py

    并且可能有比这更优雅的解决方案,比如直接获取 cflags 值,但我不是 python 女孩所以不知道如何.. ;) 我可能会弄明白,但我现在关心的是最后以 32 位模式安装 numpy .. 所以无论如何......这个python代码的第693行,我改变了

    runtime_library_dirs=None, debug=0, extra_preargs=None,
    

    runtime_library_dirs=None, debug=0, extra_preargs=['-m32'],
    

    (在函数link_executable中;如果你有不同版本的python...)

    瞧... numpy 在 32 位模式下成功安装在 64 位机器上。我认为这也适用于其他模块,因为它与 distutils 相关,而不是 numpy .. ;)

    希望这可以帮助将来的人并节省一些时间!

    伊芙-玛丽

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2011-05-23
      • 1970-01-01
      • 2011-03-12
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多