纳金网
标题:
Python静态编译器说明研究
[打印本页]
作者:
奇
时间:
2012-1-13 10:29
标题:
Python静态编译器说明研究
本文对Python的版本选择,IDE选择及编码的解决方案进行了一番详细的描述,实为Python初学者必读的Python学习经验心得。
AD:
使用了wxPython、pychecker编写的Python静态编译器,用于在编译器查找py脚本的错误,开放源码,与各位pythoner共享之,希望本文能给大家带来帮助,下面就一起进去Python的世界吧。
代码如下:
def OnBuildOne(self, event): if self.paths.count != 0: self.Report.AppendText(self.CompileInfoHead("File")) path = self.paths[self.List.GetSelection()] print "Building " + path + " ..." try: py_compile.compile(path, None, None) except py_compile.PyCompileError, ex: print ex self.Report.AppendText("=-- Build Finished.
") def OnBuildAll(self, event): if self.paths.count != 0: self.Report.AppendText(self.CompileInfoHead("File(s)")) for path in self.paths: print "Building " + path + " ..." try: py_compile.compile(path, None, None) except py_compile.PyCompileError, ex: print ex self.Report.AppendText("=-- Build Finished.
") def OnBuildDirectory(self, event): dlg = wxDirDialog(self, "Select a directory for build", self.cfg[2]) if dlg.ShowModal() == wxID_OK: path = dlg.GetPath() self.Report.AppendText(self.CompileInfoHead("Directory:", path)) compile_dir(path, 10, None, 1, None) self.Report.AppendText("=-- Build Finished.
") self.cfg[2] = dlg.GetPath() dlg.Destroy() def OnAbout(self, event): dlg = wxMessageDialog(self, "
resent by Dracula 2005
" "Build 2005.05.05
", "About", wxOK | wxICON_INFORMATION) dlg.ShowModal() dlg.Destroy() def OnResize(self, event): sizeClient = self.GetClientSize() self.List.SetSize(sizeClient) sizeList = self.List.GetClientSize() self.Report.SetSize(wxSize(sizeClient.width, sizeClient.height-sizeList.height)) def OnClose(self, event): try: f = open("config.cfg", "w") f.write(self.cfg[0]) if self.cfg[0][-1] != '
': f.write("
") f.write(self.cfg[1]) if self.cfg[1][-1] != '
': f.write("
") f.write(self.cfg[2]) f.close() except IOError: pass sys.path = self.save_sys_path[:] self.timer.Stop() del self.timer del self.icon self.Destroy() def OnQuit(self, event): self.Close(true) def PyCheck(self, argv): argv2 = ['pychecker'] argv2.append(argv) pychecker.checker2.main(argv2) #reload(pychecker.checker2) def AddPath(self, path): curdir = path system_dir = curdir + 'datascript' system_core_dir = curdir + 'datascriptcore' subsystem_dir = curdir + 'datasubsystem' subsystem_trashbin_dir = curdir + 'datasubsystem rashbin' sys.path = self.save_sys_path[:] sys.path.append(curdir) sys.path.append(system_dir) sys.path.append(system_core_dir) sys.path.append(subsystem_dir) sys.path.append(subsystem_trashbin_dir) def CompileInfoHead(self, str1, str2=""): return "=-- %s %s Compile %s %s ...
" % (self.Date(), self.Time(), str1, str2) def Error(self, error): self.Report.AppendText(error) def Output(self, info): self.Report.AppendText(info) def Date(self): t = time.localtime(time.time()) strDate = time.strftime("%Y.%m.%d", t) return strDate def Time(self): t = time.localtime(time.time()) strTime = time.strftime("%I:%M:%S", t) return strTime def Notify(self): self.statusbar.SetStatusText(self.Date() + " " + self.Time(), 1) class MyApp(wxApp): def OnInit(self): self.frame = MyFrame(NULL, -1, "cd2Py Compiler") self.frame.Show(true) return true cd2Py = MyApp(0) import sys class errCatcher: def __init__(self): pass def write(self, stuff): cd2Py.frame.Error(stuff) class outCatcher: def __init__(self): passdef write(self, stuff): cd2Py.frame.Output(stuff) sys.stderr = errCatcher() sys.stdout = outCatcher() cd2Py.MainLoop()
纳金网:http://www.narkii.com
作者:
此瑜非彼鱼
时间:
2012-1-13 10:31
看不懂的人默默走过。。。。
作者:
Tomoya
时间:
2012-1-13 10:31
先顶了收藏了,有空再研究
作者:
菜刀吻电线
时间:
2012-1-13 10:34
来,赞一个,中午请楼主吃饭
作者:
杨杨
时间:
2012-1-13 11:18
看完楼主的帖子,我的心情竟是久久不能平静。正如老子所云:大音希声,大象无形。我现在终于明白我缺乏的是什么了,正是楼主那种对真理的执着追求和楼主那种对理想的艰苦实践所产生的厚重感。面对楼主的帖子,我震惊得几乎不能动弹了,楼主那种裂纸欲出的大手笔,竟使我忍不住一次次地翻开楼主的帖子,每看一次,赞赏之情就激长数分,我总在想,是否有神灵活在它灵秀的外表下,以至能使人三月不知肉味,使人有余音绕梁、三日不绝的感受。楼主,你写得实在是太好了。我惟一能做的,就只有把这个帖子顶上去这件事了。
作者:
奇
时间:
2012-7-4 23:25
先垫一块,再说鸟
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5