2012-06-05 121 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選擇一個命令。