2015年12月27日 星期日

[Python] wxpython: import wx 找不到模組

 
《用Python玩轉數據》最後一個星期的課是用Python 寫GUI,例子整合了之前所學的東西寫成一個道指成份股的價格查詢工具:
 

GUI用的套件是wxpython,可惜當 import wx 時,Python都會出現錯誤,回應說找不到module,一直重裝都是這樣,到發覺一件奇怪的事:用 which python 指令找到的不是Mac/Lib/Python2.7,而是指向一條Anaconda的路徑。

$ which python
/Users/ryanli/anaconda/bin/python

查一下Anaconda 知道它是Python的一個distirbution, 內帶的很多套件對科學計算方便,如numpy 等,應該是我之前安裝過Anaconda。賞試方向改為如何在Anaconda distribution的環境中安裝wxpython。Anaconda 附帶的套件管理工具是conda,以下指令比較有用
$ conda info -e   #查看已建立的environment
$ conda create -n bunnies biopython  #建立名為"bunnies"的env, install "biopython" program
$ conda remove -n bunnies --all   #刪除名為"bunnies"的env,

$ source activate bunnies    #activate "bunnies" environment
$ source deactivate    #deactivate 
$ conda update conda   #更新Conda本身 

$ conda list    #查看現有的套件
$ conda search wxpython    #當中是否有wxpython? 
$ conda install wxpython    #未有就安裝下來吧
http://conda.pydata.org/docs/test-drive.html
http://conda.pydata.org/docs/_downloads/conda-cheatsheet.pdf

為使用中的python安裝了wxpython後,import wx 成功了,可以試一下以下的指令,
$ import wx
$ app = wx.App()
This program needs access to the screen.
Please run with a Framework build of python, and only when you are
logged in on the main display of your Mac.

怎麼又有問題了!? 這裡有個詳細的解答 http://wiki.wxpython.org/wxPythonVirtualenvOnMac ,permission的問題,可以將以下內容復製下來,另存成可執行的指令檔"fwpy",放在anaconda/bin,需要時用fwpy代替python
$ fwpy
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

$ python
Python 2.7.11 |Anaconda 2.3.0 (x86_64)| (default, Dec  6 2015, 18:57:58) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org

不過還有問題,這方法只是以fwpy調用電腦本身的Python,但我本身的Python沒有安裝matplotlib,所以.....還是未能順利使用。(=.=)"......

想到以下方法,暫時傾向2),希望解決到吧。
1) 用電腦上的Python,把所有套件安裝好。 (擔心給我弄壞...)
2) 用Anaconda Distribution (好處是確保現有的套件可以繼續使用,但要繼續找方法弄GUI)
3)  找Tkinter等其他GUI套件


1 則留言:

  1. 解法一不推薦,macOS 包的 Python 最好不要動它。
    解法二行不通,還是會出現「This program needs access to the screen…」
    解法三不知道
    解法四,用 Python3 + WxPython Phoenix,但是不能用 Anaconda 的懶人包,因為有 Bug,還是會出現「This program needs access to the screen…」,推薦用 ActivePython 的懶人包。

    回覆刪除