標籤:

winpython, anaconda 哪個更好?

Python(x,y)和WinPython都是開源項目,其項目負責人都是Pierre
Raybaut。按Pierre自己的說法是「WinPython不是試圖取替Python(x,y),而是出於不同動機和理念:更靈活、易於維護、可移動、對操作系統侵略性更小,但是用戶友好性更差、包更少、沒有同Windows資源管理器集成。」。參考1裡面說Python(x,y)不是很穩定,此外看它目前的更新不是很頻繁,確實有可能Pierre後來的工作重心放在WinPython上了。


Canopy和Anaconda是公司推的,帶免費版和商業版/插件。這兩款發行版也牽扯到一個人,那就是Travis
Oliphant。Travis是SciPy的原始作者,同時也是NumPy的貢獻者。Travis在2008年以副總裁身份加入
Enthought,2012年以總裁的身份離開,創立了一個新公司continuum.io,並推出了Python的科學計算平台Anaconda。
Anaconda相對Canopy支持Python的版本更多,對Python新版本支持跟的很緊(Sage不支持Python3.x的理由是因為其依賴的SciPy還不支持Python3,而Anaconda卻實現了支持Python3.3和3.4,這就說明問題了),此外其在Linux平台下(通過conda管理)安裝更方便。

[原創]選擇Python科學計算髮行版

兩者使用的是相同的界面--spyder。到底有什麼區別呢,哪個更好一些?


不請自來。本問題回答於2015年末,未來可能會出現個人不同意當前觀點的狀況。

種種跡象表明,從13-14年開始在科學計算領域使用Anaconda對於我確實是一個不錯的選擇。作為一個「科學計算髮行版」,而不是一個專用於其他功能的發行版,我會給Anaconda 9分(滿分10)

Pros:

1 Anaconda 作為科學計算/數據挖掘的工具效能讓人滿意。

我認為一些科學計算必要的工具在Anaconda中默認安裝:

  • NumPy+SciPy的底層組合

  • Pandas對結構化/非結構化數據的轉換以及靈活的處理

  • Statsmodels,Scikit-Learn、NetworkX等對於數據挖掘的支持在Anaconda裡面是默認安裝的

當然工作中我還會關注一些conda沒有收錄的可愛功能,這其中包括:

  • 詞雲繪圖工具wordcloud

  • 社交網路挖掘的Louvain演算法

  • gradient boosting工具xgboost

更多功能大家自己到github, bitbucket, sourceforge等都可以找到,就不贅述。

2 Anaconda 作為知識傳導的工具令人滿意。

在其他回答中我看到了有人提到ipython notebook無法正常工作,新手應該注意一下不要在翻牆的同時使用這個功能,它的原理是本地開埠建立一個Server,在瀏覽器中可以打開ipynb文檔,開啟Python Kernel,執行代碼以及寫Markdown風格的文檔。我從Ipython 2.x的版本一直用到4.0(已經更名為Jupyter),這個工具可以同時支持Python、Julia和R腳本的Notebook,實現圖文碼並茂的文檔。它的好處就是,HTML可以置於伺服器端,而notebook可以直接共享給他人或者放在github上。

當我提到繪圖的時候,我的意思是bokeh。基於bokeh.js,你的靜態圖和動圖都可以放在Ipython notebook裡面或者使用bokeh-server寫在伺服器上。Python和JavaScript之間交換數據我沒有感覺到絲毫的不適,而bokeh本身對於高等、低等圖形元素的設計讓人感覺恰到好處。作為一個Processing2和R ggplot2的前用戶,上手bokeh花了大概1-2天。

(小廣告:出於私心推薦Processing 3,現在支持Python。值得上手一玩)

圖文碼並茂的文檔我私人觀點認為,未來是一個大方向:一個200人的公司,下至你手底下的小卒,上至CEO,都會從文檔中獲取他們需要整合的信息。作為數據分析師,數據科學家這種有些容易被碼工鄙視實幹不足,又被運營嗤之以鼻不夠業務敏感不接地氣的崗位,用數據講出你想講出的李菊福的故事應該是基本功。

3 Anaconda的工具生態圈讓我覺察到了它未來的布局或者說野心。

且不說Win/MacOS/Linux通吃,請看如下鏈接中的PDF鏈接 Learn more about Anaconda

Anaconda提出了數據科學生態圈的概念,我認為這是經過凝練濃縮之後的總結出來的一套方法論。

  • 數據整合、探索、統計分析、挖掘、預測(見第一點)
  • 數據的儀錶板、故事板乃至BI工具(見第二點)
  • 代碼底層加速能力:合理利用CPU(blaze生態系統,Intel MKL)、GPU(CUDA JIT)、Spark
  • 企業工具:本地部署的協作開發平台wakari、本地定製化部署的Hadoop Spark(已有docker)

結合方法論提供解決別人痛點的工具是虛幻的,所以Continuum Analytics自己也做數據、演算法的諮詢服務。我認為有一大批壓根沒有遠見的、沒有真正以數據為核心做數據科學的所謂大數據公司,他們是真正好用技術的懷疑論者,我向來是無視的。

Cons:

1 技術群裡面很多小夥伴反饋說conda生態圈更新慢。一般會晚1-2個月,比如IPython 4.0或者說Python 3.5的整合。我希望有的是穩定、簡單的版本,對更新的需求可以壓抑一下。

2 有些本來可以免費找到的資源在Anaconda中收費,比如NumPy w/ Intel MKL。而且,個人無法負擔本地部署的Wakari企業級協作開發產品和Hadoop Spark集群產品。如果你有興趣可以寫郵件quote之。

3 回頭看到題主提到的Spyder我跟你說我強迫症又犯了。Spyder作為IDE提供的是類似Matlab或者RStudio的體驗,Python作為開發語言,除了Ipython Notebook以外,我建議你從以下2個工具里2選1,這2個可都不是Anaconda自帶的工具了。

  • PyCharm,JetBrains的精品,Win/MacOS/Linux全平台。不多解釋了。
  • Sublime Text 3,編輯器里我用著挺順手(代碼風格檢查、高亮、代碼上傳、多翻譯器切換)

那些說Vim的,你過來咬我啊!

================================================================

作為一個Anaconda的收費產品使用者,我得承認在幾乎所有的技術群裡面我表現的都像官托。

管它呢!Life is short, no BB.


用過兩個軟體後,我發現自己偏愛Anaconda啊!

大家都喜歡美觀易用的User Interface,這樣的話Anaconda是個不錯的選擇,界面漂亮,更方便管理那些Libraries,而且會對版本更新比較勤快。

其實說實話,我原來都是自己手動安裝所有的Libraries的,從來不藉助這些第三方軟體,感覺這樣比較Cool,可是經常會出現那些停留在Python2.x的Libraries,還要自己動手修改代碼,才可以用,真是痛心疾首,後來找了很多的第三方,比如題主說的 (x,y)Python,Anaconda,還有Enthought,Winpython。後來綜合考慮了,軟體的美觀程度,版本兼容性,更新頻率,管理難易程度,我還是選擇了Anaconda這條大水蟒。

一般堆代碼也都是在Ipython Notebook裡面完成的,很少去Spyder裡面編輯,畢竟能少打開一個軟體窗口就要節省一個窗口,而且整合在瀏覽器中的Ipython Notebook對代碼每一步的測試很好用,命令行和批處理完美的融合在了一起,而且學會了Markdown語言後,整個就是一個筆記本,無論是圖片,視頻,數學公式,還是項目列表,表格,各種格式的文本都可以在一個ipnb文件里完成。是科學工作者和程序員的好筆記本,只有更愛它。

可以插入圖片

可以插入網頁

可以繪製表格

可以嵌入網路鏈接

可以直接繪圖

可以編輯數學公式

對 pandas 的良好支持


Anaconda 和 winpython 都用過,Anaconda用得少些,windows下主要用winpython。

python如果不是做開發的話,相比spyder, 用ipython notebook是更好的選擇.

有關兩者的區別就我了解有如下幾點:

1,我曾經讓學生裝Anaconda作為python課上的使用軟體,但是不少同學安裝都出現問題,最主要的就是ipython notebook用不了,而後改用winpython,出現問題的情況變少了。這發生在2013年,之後上課就統一用winpython了。

2,winpython脫胎於pythonxy,面向科學計算,兼顧數據分析與挖掘,;而Anaconda主要面向數據分析與挖掘方面,在大數據處理方面有自己特色的一些包, 據說在極大的矩陣運算方面速度很快。

3,winpython強調便攜性,被做成綠色軟體,不寫入註冊表,安裝其實就是解壓到某個文件夾,移動文件夾甚至放到U盤裡在其他電腦上也能用。Anaconda則算是傳統的軟體模式。

4,winpython是由個人維護;Anaconda是由一家數據分析服務公司維護;這個區別意味著winpython在很多方面都從簡,而Anaconda會提供一些人性化設置。

5,winpython 只能在windows上用,Anaconda則有linux的版本。

大致就這些,其實兩個集成平台最大的區別還是其集成的軟體包的區別,在windows下裝python的包容易出問題,你需要哪些包,而其中一個有,那就選那個。

拋開軟體包的差異,我個人推薦初學者用winpython,我覺得它似乎正因為其簡單,問題也少點,由於便攜性的特點系統壞了,重裝後也能直接用。

最後一個建議,用python時間長了,最終還是會在linux下用的。windows下太縛手縛腳了。


JP Morgan和Credit Suisse用Anaconda,朋友告訴我Citi也是用那個。看看哪個你們行業用的廣泛就用哪個唄~


你要想在Linux或者你想在伺服器上用python,還是推薦Anaconda。Anaconda的ipython用來寫代碼,或者跑跑你的function測試下,然後把完整的代碼用vim修改或者查看。如果你在伺服器上,當訓練比較大的數據的話,用screen或者tmux,可以幫你省很多麻煩!所以我覺得你要是在伺服器或者類似AWS那種的礦建上,我建議你可以試試:Anaconda + Vim + screen(tmux)


我來安利一下Canopy。

主界面長這樣,

目前最新的版本是1.7。如果你還是學生,可以用學校郵箱註冊賬號登錄,解鎖debug 功能。

重點安利它家的Package Manager 功能,界面長這樣,

可視化的安裝界面,媽媽再也不用擔心我的package 缺失/版本混亂/安裝路徑不明啦!

Canopy 為您貼心準備了所有常用的科學計算包,包括大名鼎鼎的numpy,scipy,pandas等等。numpy 的安裝情況長這樣,

連pip install 都不用啦!滑鼠點點,安裝卸載輕輕鬆鬆。甚至可以回溯歷史版本!是否過於炸裂!

同時Canopy 對於Jupyter Notebook 的支持也很棒,可以在editor 里直接查看、編輯。

個人認為Canopy 最棒的一點是如果在安裝時將它設置為default ,之後就不需要擔心Python 的編譯環境了。Canopy 自動為你創建出一個VirtualEnv,使你專心於具體的實現,不必擔心底層的情況。

最後,Pycharm 也是極好的!然而我用sublime text 碼代碼。。。(一黑黑倆


清華大學為 anaconda 提供了鏡像服務,可以大大提高下載速度。

執行如下命令即可使用清華大學提供的anaconda鏡像服務:

1
2

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes


在 windows 下我推薦 anaconda,或者說其背後的 conda 包管理系統。它提供了和 pip 類似的管理功能並且有所增強(例如支持 env),並且,所有的包都是編譯好的,不必像 pip 那樣安裝 numpy 和 scipy 時折騰許久。如果覺得默認包配置太累贅的話,完全可以下載 conda 最小包 miniconda (Miniconda — Conda)來進行安裝


anaconda在win 下各種崩潰,還是用winpython吧。我是win7,用的最新版和11月的次新版。


Anaconda用來管理python所用的包和環境是最方便的。Anaconda 實際上是一個軟體發行版,它附帶了 conda、Python 和 150 多個科學包及其依賴項。可以使用 conda 來安裝任何可用的包。

pip,是 Python 庫的默認包管理器。conda 與 pip 相似,不同之處是可用的包以數據科學包為主。另一大好處是,安裝了anaconda,你就可以建立多個python版本的虛擬環境。在遇到代碼只能運行在python 2.7或python 3.5這種情況時很方便地切換python版本。

再來說說如何從anaconda的command界面進入不同版本的python。假設已經分別建好python 2.7 和python 3.5的虛擬環境為py2和py35,現在要從anaconda的command界面進入python 2.7:

&>&>&>activate py2

&>&>&>python

&>&>&>

這時,你就可以像在python shell里一樣運行python代碼了。如果要退出python:

&>&>&>ctrl+Z, 回車

這樣就又回到anaconda下了。


大多數人不明白Anaconda究竟局限性在哪裡, 這篇文章寫的還行:

關於conda和anaconda不可不知的誤解和事實------conda必知必會


Windows下建議使用WinPython,Linux下則使用Anaconda。


沒用過winpython,只用過anaconda

用了anaconda覺得已經很好用了


為了Mayavi用了enthought。

其實這些都差不多。不必太過糾結。


地統計數據處理方向。一開始用anaconda,後來用miniconda安裝一些常用的包,感覺有些包升級沒法達到自己所要求的版本。最後還是轉投winpython ,直接pip安裝需要的包。


沒法對比,用了anaconda後,就沒考慮用別的了。作為非前沿非學術也非高精半數據工作者,anaconda已經基本滿足我的使用需求了。


據說anaconda的源在牆外,訪問不穩定。

我用anaconda安裝R語言支持,一直沒成功。

An unexpected error has occurred, please consider sending the:--:-- 0.00 B/s

following traceback to the conda GitHub issue tracker at:

https://github.com/conda/conda/issues

Include the output of the command conda info in your report.

Traceback (most recent call last):

File "/opt/conda/lib/python3.5/site-packages/requests/packages/urllib3/response.py", line 226, in _error_catcher

yield

File "/opt/conda/lib/python3.5/site-packages/requests/packages/urllib3/response.py", line 301, in read

data = self._fp.read(amt)

File "/opt/conda/lib/python3.5/http/client.py", line 433, in read

n = self.readinto(b)

File "/opt/conda/lib/python3.5/http/client.py", line 473, in readinto

n = self.fp.readinto(b)

File "/opt/conda/lib/python3.5/socket.py", line 575, in readinto

return self._sock.recv_into(b)

File "/opt/conda/lib/python3.5/ssl.py", line 924, in recv_into

return self.read(nbytes, buffer)

File "/opt/conda/lib/python3.5/ssl.py", line 786, in read

return self._sslobj.read(len, buffer)

File "/opt/conda/lib/python3.5/ssl.py", line 570, in read

v = self._sslobj.read(len, buffer)

ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/opt/conda/bin/conda", line 5, in &

sys.exit(main())

File "/opt/conda/lib/python3.5/site-packages/conda/cli/main.py", line 173, in main

args_func(args, p)

File "/opt/conda/lib/python3.5/site-packages/conda/cli/main.py", line 180, in args_func

args.func(args, p)

File "/opt/conda/lib/python3.5/site-packages/conda/cli/main_install.py", line 45, in execute

install.install(args, parser, install)

File "/opt/conda/lib/python3.5/site-packages/conda/cli/install.py", line 423, in install

plan.execute_actions(actions, index, verbose=not args.quiet)

File "/opt/conda/lib/python3.5/site-packages/conda/plan.py", line 538, in execute_actions

inst.execute_instructions(plan, index, verbose)

File "/opt/conda/lib/python3.5/site-packages/conda/instructions.py", line 148, in execute_instructions

cmd(state, arg)

File "/opt/conda/lib/python3.5/site-packages/conda/instructions.py", line 52, in FETCH_CMD

fetch(state[index], arg)

File "/opt/conda/lib/python3.5/site-packages/conda/instructions.py", line 48, in fetch

fetch_pkg(index[fn])

File "/opt/conda/lib/python3.5/site-packages/conda/fetch.py", line 296, in fetch_pkg

download(url, path, session=session, md5=info[md5], urlstxt=True)

File "/opt/conda/lib/python3.5/site-packages/conda/fetch.py", line 376, in download

chunk = resp.raw.read(2**14)

File "/opt/conda/lib/python3.5/site-packages/requests/packages/urllib3/response.py", line 311, in read

flush_decoder = True

File "/opt/conda/lib/python3.5/contextlib.py", line 77, in __exit__

self.gen.throw(type, value, traceback)

File "/opt/conda/lib/python3.5/site-packages/requests/packages/urllib3/response.py", line 244, in _error_catcher

raise ProtocolError(Connection broken: %r % e, e)

requests.packages.urllib3.exceptions.ProtocolError: ("Connection broken: ConnectionResetError(104, Connection reset by peer)", ConnectionResetError(104, Connection reset by peer))

The command /bin/sh -c conda install --yes rpy2 r-base r-irkernel r-plyr r-devtools r-dplyr r-ggplot2 r-tidyr r-shiny r-rmarkdown r-forecast r-stringr r-rsqlite r-reshape2 r-nycflights13 r-caret r-rcurl r-randomforest returned a non-zero code: 1


推薦閱讀:

8、Templates知識點總結
3分鐘帶你了解SQL高級操作

TAG:Python |