【问题标题】:Installing Numpy locally在本地安装 Numpy
【发布时间】:2012-06-05 00:34:45
【问题描述】:

我在远程计算机上拥有一个没有 root 权限的帐户,我需要安装 Python 的本地版本(远程计算机的 Python 版本与我的某些代码不兼容),那里有 Numpy 和 Scipy。从昨天开始,我一直在尝试在本地安装 numpy,但没有成功。

我在 /home/myusername/.local/ 中成功安装了本地版本的 Python (2.7.3),因此我通过执行 /home/myusername/.local/bin/python 访问此版本的 Python。我尝试了两种安装 Numpy 的方法:

  1. 我从官网上下载了最新的稳定版Numpy,解压,进入解压后的文件夹,结果:/home/myusername/.local/bin/python setup.py install --prefix=/home/myusername/.local。但是,我收到以下错误,然后是一系列其他错误(源自此错误):

    gcc -pthread -shared build/temp.linux-x86_64-2.7/numpy/core/blasdot/_dotblas.o
    -L/usr/local/lib -Lbuild/temp.linux-x86_64-2.7 -lptf77blas -lptcblas -latlas 
    -o build/lib.linux-x86_64-2.7/numpy/core/_dotblas.so
    /usr/bin/ld: /usr/local/lib/libptcblas.a(cblas_dptgemm.o): relocation 
    R_X86_64_32 against `a local symbol' can not be used when making a shared 
    object; recompile with -fPIC
    

    不知道这意味着什么(除了错误显然与 LAPACK 库有关),我只是执行了与上面相同的命令,但现在按照错误的建议输入 LDFLAGS='-fPIC',即我做了 LDFLAGS="-fPIC" /home/myusername/.local/bin/python setup.py install --prefix=/home/myusername/.local。 但是,我得到了同样的错误(除了在上面的 gcc 命令之后添加了前缀 -fPIC)。

  2. 我尝试使用 pip 安装它,即在我的本地路径中成功安装 pip 后执行/home/myusername/.local/bin/pip install numpy /)。但是,我得到了完全相同的错误。

我在网上搜索过,但似乎没有一个错误与我的相似。我的第一个猜测是,这与一些需要 root 权限才能执行的代码有关,或者可能与 LAPACK 库的版本有关。

帮忙,有人吗?

【问题讨论】:

  • 我不知道 superuser.com!我也会在那里发布问题,感谢您的建议(但是,我仍然想知道......为什么我的问题不适合这里?)。
  • -fPIC 是一个编译选项,而不是一个链接选项,所以将它添加到 LDFLAGS 不会做任何事情。您应该尝试将其添加到编译器标志中。
  • 感谢您的提示!但是,即使使用 CFLAGS="-fPIC" 也会引发同样的错误...
  • 您确定所有内容都在使用新标志重新编译吗?因为源文件没有改变,setup.py 有可能直接进入链接阶段。确保在重新编译之前删除“build”目录。
  • 是的,我确定。在使用 CFLAGS='-fPIC' 编译代码之前,我删除了构建目录。

标签: python numpy installation


【解决方案1】:

错误消息告诉您,您的 ATLAS 库尚未使用 -fPIC 标志构建。这意味着它不能链接到像 Python 扩展模块这样的共享库。您需要使用 -fPIC 标志重建 ATLAS。 ATLAS 文档描述了如何执行此操作。

【讨论】:

    【解决方案2】:

    从源代码构建有点痛苦。是否可以避免这样做?

    如果我们假设您尝试在 x86 计算机(Intel、AMD 等)上安装,您是否可以将 Python 安装在另一台您确实具有 root 权限的 x86 计算机上,然后制作一个 tar Python安装的存档,将tar复制到另一台计算机,然后解压tar存档?

    上面的问题是,预构建的 Python 可能有硬编码的路径来查找库:它可能需要库位于 /usr/share 或其他位置。这将是一个 hack,但你可以创建一个 chroot jail 并让 Python 运行。

    您可能还想看看 Enthought Python Distribution (EPD)。我相信 EPD 安装程序只会询问您希望 EPD 安装在哪里,然后将其安装在那里。

    http://www.enthought.com/products/epdgetstart.php?platform=linux

    有一个免费版本的环保署。如果您想要 64 位,则必须为 EPD 付费,但如果 32 位适合您,那么您可能只需要 EPD Free。

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

    附: Enthought 网站似乎拒绝任何不以www. 开头的 URL!这意味着某些 Google 搜索链接不起作用,除非您编辑它们以在开头插入 www.。我相信他们很快就会解决这个问题。

    【讨论】:

    • 是的,事实上,我认为这就是问题所在:代码试图使用来自 /usr/bin/ld 的库。但是,我真的需要本地安装;只是复制一个已经编译的对我来说似乎不安全。
    • 我认为你可以相信 Enthought 不会将特洛伊木马攻击或其他不好的东西放入他们的 Python 构建中。但是,如果您真的更喜欢构建它,我希望它对您有用。嗯。也许您应该尝试在具有 root 权限的机器上从软件构建,然后将构建的 tar 存档并传输它?至少这可以让您控制用于构建的 Fortran 编译器以及诸如此类的事情。
    【解决方案3】:

    您可能希望查看 EasyBuild 以构建启用了 numpy 和 scipy 的本地 Python 版本,请参阅 http://hpcugent.github.com/easybuild/

    它基本上把所有讨厌的东西都带走了,你只需要稍微配置一下(例如,指定你希望软件在哪里结束),然后你就可以用你选择的包构建 Python一个命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多