問題描述:安裝PILhtml
錯誤1:_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
解決方法:ln -s /usr/local/include/freetype2 /usr/local/include/freetype算法
錯誤2:'X11/Xlib.h' file not found
解決方法:ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers/X11 /usr/local/include/X11 (MacOSX10.9.sdk,換成本身的版本)segmentfault
問題描述:生成樹狀圖blogclust.jpg時,報錯
錯誤:app
IOError: decoder zip not available
緣由:PIL須要依賴其餘庫,可是依賴卻出了問題(P38的錯誤1和2,就是依賴問題)
解決方法:安裝PIL的一個分支,叫pillow
安裝方法:dom
卸載以前安裝的PIL,方法參考連接code
pip install pillow
未知問題:因爲以前經過源代碼編譯安裝過PIL,後來才裝的pillow,不知道直接安裝pillow會不會出現問題orm
問題描述:運行遺傳算法,報錯
錯誤:htm
for d in range(len(sol) / 2): TypeError: object of type 'NoneType' has no len()
緣由:blog
# 當if,elif都不知足是,返回None def mutate(vec): i = random.randint(0, len(domain) - 1) if random.random() < 0.5 and vec[i] > domain[i][0]: return vec[0:i] + [vec[i] - step] + vec[i+1:] elif vec[i] < domain[i][2]: return vec[0:i] + [vec[i] + step] + vec[i+1:]
解決方法:ip
# if,elif都不知足的狀況是,vec[i]等於domain[i][3],所以把vec[i]等於domain[i][4]加入到if的條件判斷中。這很合理,由於無聊random.random()的隨機值是多少,只要vec[i] == doman[i][0],那麼elif就會執行。 def mutate(vec): i = random.randint(0, len(domain) - 1) if (random.random() < 0.5 and vec[i] > domain[i][0]) or vec[i] == domain[i][5]: print '>', vec[0:i] + [vec[i] - step] + vec[i+1:] return vec[0:i] + [vec[i] - step] + vec[i+1:] elif vec[i] < domain[i][6]: print '<', vec[0:i] + [vec[i] + step] + vec[i+1:] return vec[0:i] + [vec[i] + step] + vec[i+1:] # 什麼都不作,也行 def mutate(vec): i = random.randint(0, len(domain) - 1) if random.random() < 0.5 and vec[i] > domain[i][0]: return vec[0:i] + [vec[i] - step] + vec[i+1:] elif vec[i] < domain[i][7]: return vec[0:i] + [vec[i] + step] + vec[i+1:] else: return vec