2012-06-05 84 views
4

我有一个没有root权限的远程计算机帐户,我需要安装本地版本的Python(远程计算机有一个与我有的代码不兼容的Python版本),Numpy和Scipy那里。自昨天以来,我一直试图在本地安装numpy,但没有成功。在本地安装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库版本有关。

帮助,任何人?

+0

我不知道superuser.com!我也会在那里发布这个问题,谢谢你的建议(但是,我仍然想知道......为什么我的问题不适合这里?)。 –

+0

-fPIC是一个编译选项,而不是一个链接选项,因此将它添加到LDFLAGS将不会执行任何操作。您应该尝试将其添加到编译器标志。 – DaveP

+0

感谢您的提示!但是,即使使用CFLAGS =“ - fPIC”也会产生相同的错误... –

回答

3

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

2

从源代码构建是一种痛苦。有没有可能避免这样做?

如果我们假设您正试图在x86计算机上安装(英特尔,AMD等),那么您可以在另一台x86计算机上安装Python,其中做了有根目录,然后将Python的tar归档文件安装,将tar复制到另一台计算机,然后解压tar档案?

上面的问题是,预先构建的Python可能具有硬编码的路径以查找库的位置:它可能需要库中的文件位于/usr/share或其他任何位置。这可能会有些破绽,但是你可能可以制作一个chroot监狱并让Python运行。

您可能还想看看Enthought Python Distribution(EPD)。我相信环保署的安装者只是问你想要安装EPD的地方,然后安装在那里。

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

有EPD的免费版本。如果你想64位,你将不得不支付EPD,但如果32位将为你工作,EPD免费可能是你所需要的。

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

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

+0

是的,事实上,我认为这就是问题所在:代码试图使用/ usr/bin/ld中的库。但是,我真的需要本地安装;只是复制已经编译好的一个对我来说似乎并不安全。 –

+1

我认为你可以信任Enthought不要把Trojan Horse攻击或其他不好的东西放入他们的Python构建中。但是,如果你真的想要建立它,我希望它适合你。嗯。也许你应该尝试从你有root的机器上的软件构建,然后将你的构建的tar归档并转移它?至少这会让你控制哪个Fortran编译器被用于构建和那种事情。 – steveha

0

您可能希望查看EasyBuild以构建启用了numpy和scipy的本地Python版本,请参阅http://hpcugent.github.com/easybuild/。它基本上把所有讨厌的东西从你身上拿走,你只需要稍微配置一下(指定你想要的软件最终位置,例如),然后你可以用你的软件包构建Python选择一个命令。