1. 程式人生 > >學習python中遇到的那些坑

學習python中遇到的那些坑

1.wxpython:

 開始學習python一段時間後,厭倦了命令列,想著玩玩GUI,python自帶的Tkinter我就不說了,前人說過,坑太多我就不去踏了

目標釘在wxpythonpyQT,網上推薦較多的是wxpython,    pyQ沒玩過,想想QT的東西肯定不簡單,就沒去碰,乖乖的安裝了wxPython

寫出了第一個wxpython程式:這個程式沒有什麼功能,就是一個文字框中顯示滑鼠的座標值

# -*- coding: UTF-8 -*-
'''
Created on 2014-10-30

@author: bo.chen
'''
import wx
class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
        panel = wx.Panel(self, -1)
        panel.Bind(wx.EVT_MOTION,  self.OnMove)
        wx.StaticText(panel, -1, "Pos:", pos=(10, 12))
        self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10))

    def OnMove(self, event):
        pos = event.GetPosition()
        self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = MyFrame()
    frame.Show(True)
    app.MainLoop()

所用編輯器為pycharm,死活執行不了:

  File "D:/mypython/wx/wx1.py", line 8, in <module>
    class MyFrame(wx.Frame):
AttributeError: 'module' object has no attribute 'Frame'

找了半天實在是鬱悶,然後直接開啟目錄執行 wx1.py 沒有任何問題,百撕不得騎姐,終於在一個陽光明媚的上午找到了原因:

原來這裡的 import wx匯入的是本地python包wx,並未匯入wxpython下的wx包:是這樣的在建立wx1.py指令碼之前,在pycharm

project中右鍵

隨手新建了一個Python Package 名字叫作wx,然後在wx資料夾下建立了wx1.py

這裡的wx資料夾是Python 包而非普通的資料夾,雖然都是資料夾,但是在pycharm中執行環境中是區別對待的,因為這個錯誤險些放棄了wxpython,因為

pycharm真的很好用,如果pycharm 中不能使用wxpython,我是不會放棄pycharm的,我肯定會選擇其他的圖形庫.這種低階錯誤真的不應該犯!

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

2.py2exe: 

error: [Errno 2] No such file or directory: 'MSVCP90.dll'

 前面已經用python寫出了一個GUI,在windows下也執行起來了,但是這個程式只能在安裝有python和電腦上執行,有沒有辦法讓普通電腦上執行用python寫的程式

呢?答案是 有!而且還有多種,這裡也是選擇較為方便的一種方案py2exe

安裝挺順利 沒有網上說的那些問題,開始命令列模式:打包exe,出現上述錯誤:

error: [Errno 2] No such file or directory: 'MSVCP90.dll',解決方法很簡單 到windows目錄下找個MSVCP90.dll檔案放到C:\Python27\DLLs下重新打包 OK,注意我的系統是64位

的,python是32位,在c盤搜尋MSVCP90.dll可能會找到多個檔案,選擇X86包下面的那個

ps. 成功生成exe檔案很興奮,趕緊把生成的wx1.exe拷貝到其他沒有python環境的電腦上執行試驗,啪啪的打臉:


這是神馬情況呢? 原來單獨的exe並不能執行,需要把生成exe那個目錄dist一塊拷走才能執行

3.Boa constructor不支援中文

Boa constructor是一個視覺化 可拖拽的wxpython IDE,儘管介面做的四分五裂,但是功能還算能用,當你用它拖拽出一個GUI後關閉,來到

pycharm編輯器 下寫邏輯,寫下一句print '點選了按鈕',儲存再用Boa constructor開啟,發現Boa constructor執行不了了:


解決方法:Boa constructor的編輯器中不支援中文,想顯示中文要將中文轉成Unicode編碼

啊啊 這個問題原來是Boa constructor自動生成的的.py檔案造成的 ,只需在.py開頭加上:

#coding:utf-8即可

這就是學習python開發中遇到的坑,先寫這麼多,以後遇到了再更新,希望你不要再踏入!