cherrypy安裝使用,配置python環境變數 CherryPy是一種基於Python的Web應用程式開發架構,一個相當不錯的HTTP Framework,它極大地簡化了使用Python 的web開發人員的工作。 1.安裝cherrypy: 從http://www.cherrypy.org/下載最新的cherrypy包 解壓縮後到目錄下運行安裝目錄(註:必須先安裝python並把python目錄加到環境變數中) C:\Documents and Settings\zheng>G: G:\>cd sns/CherryPy-3.1.2 G:\sns\CherryPy-3.1.2>python setup.py build G:\sns\CherryPy-3.1.2>python setup.py install 安裝完畢就可以用了。 2.在G:\sns\CherryPy-3.1.2目錄下建立一個hello.py的檔案,輸入下面簡單的幾行代碼可以實現一個“Hello, World!”Application import cherrypy class HelloWorld(object): def index(self): return "Hello World!" index.exposed = True cherrypy.quickstart(HelloWorld()) 3.回到命令列輸入下面命令啟動 G:\sns\CherryPy-3.1.2>python hello.py [16/Jan/2011:21:35:07] ENGINE Listening for SIGTERM. [16/Jan/2011:21:35:07] ENGINE Bus STARTING CherryPy Checker: The Application mounted at '' has an empty config. [16/Jan/2011:21:35:07] ENGINE Started monitor thread 'Autoreloader'. [16/Jan/2011:21:35:07] ENGINE Started monitor thread '_TimeoutMonitor'. [16/Jan/2011:21:35:08] ENGINE Serving on 127.0.0.1:8080 [16/Jan/2011:21:35:08] ENGINE Bus STARTED 4.在瀏覽器輸入http://localhost:8080/ 訪問可以看到下面內容: Hello World! 輸入http://localhost:8080/index也訪問到一樣的內容 5.把上面內容改為 import cherrypy class HelloWorld(object): def hello(self): return "hello" def index(self): return "Hello World!" hello.exposed = True index.exposed = True cherrypy.quickstart(HelloWorld()) 在瀏覽器中輸入 http://localhost:8080/hello 可以看到輸出為hello ====================================== 配置python環境變數 G:\sns\CherryPy-3.1.2>python 'python' 不是內部或外部命令,也不是可啟動並執行程式 或批次檔。 預設情況下,在windows下安裝python之後,系統並不會自動添加相應的環境變數。此時不能在命令列直接使用python命令。 1.首先需要在系統中註冊python環境變數:假設python的安裝路徑為c:\python2.5,則修改我的電腦->屬性->進階->環境變數->系統變數中的PATH為: PATH=PATH;c:\python25 上述環境變數設定成功之後,就可以在命令列直接使用python命令。或執行"python *.py"運行python指令碼了。 2.此時,還是只能通過"python *.py"運行python指令碼,若希望直接運行*.py,只需再修改另一個環境變數PATHEXT: PATHEXT=PATHEXT;.PY;.PYM 3.另外,在使用python的過程中,可能需要經常查看某個命令的協助文檔,如使用help('print')查看print命令的使用說明。預設安裝的python無法查看協助文檔,尚需進行簡單的配置: 在python安裝目錄下,找到python25.chm,使用hh -decompile .python25.chm將其反編譯出來,然後將其所在的目錄加入到上面提到的PATH環境變數中即可。 ================================================ 使用PyWin32將CherryPy應用安裝為服務 # coding=cp936 import cherrypy import win32serviceutil import win32service import win32event class HelloWorld: """ 請求控制代碼例子 """ # 暴露對象 @cherrypy.expose def index(self): # 只做測試用,所以只返回簡單內容 return "Hello world!" class MyService(win32serviceutil.ServiceFramework): """NT 服務""" # 服務名 _svc_name_ = "CherryPyService" # 服務顯示名稱 _svc_display_name_ = "CherryPy Service" def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) # 建立一個事件 self.stop_event = win32event.CreateEvent(None, 0, 0, None) def SvcDoRun(self): cherrypy.root = HelloWorld() # 更新配置,當使用設定檔時,必須為一個絕對路徑 cherrypy.config.update({ 'global':{ 'server.socketPort' : 81, 'server.environment': 'production', 'server.logToScreen': False, 'server.log_file': 'e:editlog.txt', 'server.log_access_file': 'e:editlog.txt', 'autoreload.on' : False, 'server.logTracebacks' : True } }) # 設定 initOnly=True cherrypy.server.start(initOnly=True) win32event.WaitForSingleObject(self.stop_event, win32event.INFINITE) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) cherrypy.server.stop() win32event.SetEvent(self.stop_event) if __name__ == '__main__': win32serviceutil.HandleCommandLine(MyService) P.S.假設檔案名稱為mysrv.py 則 x:>mysrv.py --顯示所有可用命令選項 mysrv.py install--安裝服務 mysrv.py start --啟動服務 mysrv.py stop --停止服務 mysrv.py restart --就是restart,重啟,更新代碼用 mysrv.py remove --刪除服務 再P.S.測試時候一定要注意防火牆,服務是自動攔截的(pythonservice.exe).偶就在這裡出問題了~嘻嘻 用到的路徑必須全為絕對路徑,靜態目錄也是 安裝好服務後,也可以使用net start/stop CherryPyService 來管理 |