2014-10-11 57 views
6

我試圖安裝基本的scipy棧(numpy,scipy,matplotlib,pandas,sympy,ipython,nose)到virtualenv中;目前,我正在使用OSX Mountain Lion。從這些軟件包的安裝頁面,以及這裏和網絡上的各種線程看來,熊貓,sympy和鼻子都可以用pip輕鬆安裝(儘管某些列表numpy/scipy /等作爲依賴關係)。如何用pip和自制軟件安裝SciPy堆棧?

但是,似乎有正確安裝numpy,scipy,matplotlib和某種程度上ipython *的矛盾和種類繁瑣的說明。單獨使用pip安裝似乎不是安裝這些軟件包的正確方法;似乎一些依賴需要與自制軟件一起安裝,但不同的地方列出不同的軟件包,以便在pip安裝numpy/scipy/etc之前進行brew安裝。在pip安裝numpy,scipy和matplotlib之前,是否有需要使用自制軟件安裝的全面的當前軟件包依賴關係列表?

就像一個說明,我已經看了點擊自制軟件/ python適當安裝numpy,scipy和matplotlib自制軟件,但我想安裝到virtualenv,我不認爲我可以使用自制軟件做那。

任何幫助將不勝感激;提前致謝! *另外,對於ipython,安裝頁面顯示pip install ipython [all]應該足夠了,但其他一些來源(http://www.coderstart.com/setup/python-setup.html; http://www.lowindata.com/2013/installing-scientific-python-on-mac-os-x/)似乎表明qt,pyqt和zmq包需要被brew在pip安裝ipython之前先安裝;根據ipython安裝頁面來安裝需要的自制安裝還是很不錯的?

回答

10

這裏回答我的問題,但希望這是有幫助的;如果有任何錯誤,請隨時糾正。原始版本是一個巨大的文本牆,所以我已經將tl; dr添加到頂端,只是希望使步驟更清晰。

tl; dr:在終端/ bash中,進入virtualenv(如果要安裝成一個)並按順序輸入這些命令。這是爲OSX Mountain Lion測試的。

pip install numpy 
brew install gcc 
pip install scipy 
brew install freetype 
pip install matplotlib 
pip install nose 
pip install pandas 
pip install sympy 
pip install ipython[all] 
brew install pyqt 
brew install qt 
brew install sip 
echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.bash_profile 
source ~/.bash_profile 

*注:沖泡安裝PyQt的可能已經安裝QT和SIP;如果是這樣,安裝pyqt後無需安裝qt和sip。對於第二行到最後一行,直接將該行轉換爲〜/ .bash_profile可能更加可靠,因爲它可能需要位於〜/ .bash_profile內容的頂部。此外,brew安裝pandoc是可選的,但ipython筆記本的nbconvert命令必須正常工作。

編輯14年10月13日[見在底部編輯]:編輯PYTHONPATH在〜/ .bash_profile中勢力虛擬環境繼承全局包;如果你想能夠製造孤立的環境,不要做最後兩步。相反,假設安裝了virtualenvwrapper,請編輯包含scipy內容的virtualenv下bin目錄中的本地postactivate和predeactivate腳本。

在postactivate,請輸入:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH 

在predeactivate,請輸入:

unset PYTHONPATH 

這應該修改PYTHONPATH時當SciPy的東西virtualenv中被激活,使得IPython中qtconsole作品,但應該重置PYTHONPATH,當其他virtualenvs不受PYTHONPATH變化的影響。


下面是長篇敘述版本。

無論如何,從一些試驗和錯誤後,我最初發布這個問題,我發現下面的步驟工作;我使用了上面作爲一般指南鏈接的兩套指令,並在OSX Mountain Lion上進行了測試。

激活該軟件包將要安裝的virtualenv後,第一PIP安裝numpy的;這應該按預期工作,應該安裝numpy(注意numpy應該先安裝,因爲scipy棧中的很多其他包依賴於numpy)。

現在,在安裝之前SciPy的幾個消息人士指出,gfortran(這似乎是最常見的,但我想任何Fortran編譯器應該工作)需要安裝; brew安裝gfortran返回一個錯誤,說gcc現在包含gfortran,所以gfortran公式已被棄用。因此,我們釀造安裝gcc(注意,即使Xcode中的命令行工具,這是自制之前一般安裝,已經包含了GCC,其版本的gcc不知何故不工作或不包括gfortran)。安裝gcc之後,pip install scipy按預期工作,並且應該安裝scipy。快速旁白:沖泡安裝gcc安裝GCC,以及一堆依賴關係,即cloog,GCC,GMP,ISL,libmpc,MPFR的。 [這些應該全部安裝到/ usr/local/Cellar,這是自制軟件的默認安裝位置。]

對於安裝matplotlib,需要首先安裝freetype,因此我們需要安裝freetype;這應該安裝freetype和libpng,這似乎是一個freetype依賴。之後,pip安裝matplotlib按預期工作,成功安裝matplotlib。請注意,matplotlib安裝了mock(需要運行matplotlib測試套件),pyparsing(mathtext支持需要),python-dateutil(需要日期軸支持),6(無理由)。 [這些都應該和virtualenv一起安裝到virtualenv中的任何其他點子安裝到site-packages目錄中。]

安裝nose,sympy和pandas只需要安裝pip,因爲它們沒有任何需要進行brew安裝的依賴項。但是,其中,請注意,至少熊貓取決於numpy,因此安裝numpy後安裝熊貓(不知道其他人)可能是首選。此外,請注意,熊貓安裝pytz(用於時區計算)。

安裝IPython的是非常簡單的,但設置它是一個小更令人費解。首先,ipython可以與qt控制檯和稱爲ipython notebook的東西一起使用,它具有各種優點。你可以選擇只安裝ipython和pip install ipython,然後根據需要安裝可選的依賴項,但是我用pip install ipython [all]安裝了所有主要的可選依賴項。這會安裝ipython以及很多其他的軟件包依賴(安裝時使用backports.ssl-match-hostname(來自龍捲風),certifi(來自龍捲風),docutils(來自sphinx),gnureadline,ipython,jinja2,markupsafe(來自jinja2) ,numpydoc(來自ipython [all]),pygments,pyzmq,獅身人面像,龍捲風)。這應該是ipython同時使用標準ipython shell,qt控制檯和ipython筆記本的良好基礎。但是,如果您想使用qt控制檯或筆記本電腦,則沒有完全設置。

要使用qt控制檯,必須先安裝pyqt,qt和sip軟件包,因爲這些是不能用pip安裝的依賴項;從經驗來看,brew install pyqt似乎安裝了所有三個軟件包,但單獨安裝這三個軟件可能是一個更安全的選擇。完成後,進入〜/ .bash_profile並添加'export PYTHONPATH =/usr/local/lib/python2.7/site-packages:$ PYTHONPATH'這一行。然後在終端的'source〜/ .bash_profile'重新加載shell。這應該可以成功啓動qt控制檯。 [我不完全確定爲什麼需要添加這一行,因爲我已經編輯了PATH變量來將/ usr/local/bin放在/ usr/bin之前,但是也許qt/pyqt/sip仍然試圖鏈接自己與系統默認python,而不是自制軟件安裝python。]

筆記本似乎開箱即用,據我所見,但有一點要注意:爲了使用nbconvert(轉換筆記本到不同的文件格式),必須安裝pandoc軟件包,大概是用自制軟件。像qt/pyqt/sip一樣,它不能與pip一起安裝,這就是爲什麼它沒有與pip install ipython [all]一起安裝的原因。

編輯14年10月13日:因此很明顯,編輯PYTHONPATH將抵消空的虛擬環境,從而提供全球封裝在一個的virtualenv(how to isolate virtualenv from local dist-packages?);這在大多數情況下都會破壞virtualenv的目的,假設您想要一個全新的環境,但是ipython qtconsole正常工作是必需的。

修復程序是在virtualenv的bin文件中編輯(假設安裝了virtualenvwrapper)本地postactivate和predeactivate腳本。在postactivate中,輸入「export PYTHONPATH =/usr/local/lib/python2.7/site-packages:$ PYTHONPATH;在預先激活時,輸入」reset PYTHONPATH「行。不要執行原始文件的最後兩個步驟序列或刪除添加到〜/ bash_profile的行,這應該使得只有當激活了我們安裝的軟件包的virtualenv時纔會對PYTHONPATH進行更改,以便qtconsole可以正常工作,但在virtualenv停用之前會被重置,以便其他環境不受影響

+0

回答你自己的問題是好的,但是這個敘述性的文本牆有點令人反感,認爲這個過程基本上是一系列shell命令,所以報告_exactly_你作爲代碼格式的行執行了什麼。我懷疑 – Deditos 2014-10-12 12:26:07

+0

[勘誤]我懷疑有些用戶會犯拼寫錯誤,他們很難檢查你的答案。 – Deditos 2014-10-12 12:35:43

+0

@Deditos嗯,是的,謝謝你指出了!我想我有點太興奮了,並且被描述帶走了。我對刪除所有這些敘述感到不爽,但我會編輯tl; dr以更清晰/包含代碼格式化的行並將其移至頂端。 – thereislight 2014-10-12 17:10:07