【Python學習】利用pyinstaller+nssm將python程序打包為exe並封裝為系統服務,實現開機自啟/后台運行


利用pyinstaller+nssm將python程序打包為exe並封裝為系統服務,實現開機自啟/后台運行

emmmm…最近沉迷python,讓我再寫一篇python的博客。

前面有一篇文章,做了一個python的客戶端和一個服務端,通過sockets通信;客戶端運行在家里的win10 電腦上,服務端運行在阿里雲的centos上。客戶端可以主動監測自己的公網IP地址,並定時上報給服務端。

https://www.xiaoweigod.com/network/1588.html

 

客戶端的確做得比較簡陋,甚至連數據校驗都沒做,一切都通過服務端來判斷數據的合法性。不過更致命的是,我每次開機都要手動去點開這個客戶端,讓它保持運行,然后,客戶端運行的時候還會占用一個窗口,經常不小心就關掉了,程序運行如下圖。。每次出門得檢查下客戶端有沒有在運行,然后不放心還開個teamviewer。現在下決心要解決掉這個問題了。

 

image.png

 

 

怎么做呢?步驟分為兩步,第一步是把python程序打包成windows的可執行程序,第二步把這個可執行程序再封裝為系統服務。而系統服務運行的話是后台形式的,不會顯示任何窗口,並且可以很方便地實現開機啟動。

 

准備工具/環境要求:winxp到win10都可以,已經安裝完了python環境的電腦。

 

一、使用pyinstaller將python程序打包為exe可執行程序

1 win(ctrl和alt之間的旗子鍵)+R,打開運行,cmd

image.png

 

2 直接執行:

pip install pyinstaller

安裝成功后會顯示:

Successfully installed pyinstaller-3.3.1

 

3 進入python程序的文件夾,打包程序(比如我的程序在E盤)

pyinstaller -F E:\DDNS_clent.py

注意:加入-F參數表示打包成單一exe程序

 

完成如圖,exe程序路徑在倒數第二行:

image.png

 

我們打開這個exe文件運行一下,確保沒問題:

image.png

 

二、使用nssm將exe可執行程序注冊為系統服務

1 nssm下載地址:https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip

下載完了解壓,會得到一個文件夾,內容如圖:

image.png

2 根據你的系統是32位的還是64位的,進入相應的文件夾,將文件夾下的nssm.exe復制到E盤(復制到哪里沒強制要求,方便就行)

3 電腦左下角搜索框中搜索cmd,右鍵以管理員身份運行:

image.png

 

4 進入剛才復制的nssm文件夾中,運行命令注冊服務:

E: nssm install DDNS_client <這個名稱你可以自己定義>

然后會彈出來一個界面:

image.png

Application Path:要注冊為服務的程序的路徑

Startup directory:要注冊為服務的程序所在的文件夾

Arguments:啟動參數

 

 

填寫如圖:

image.png

 

填完后直接點Install service就好了。

image.png

 

5 查看系統服務/配置自啟動

win+R運行 services.msc,打開系統服務。

找到我們剛才注冊的服務,如圖,修改為自動啟動,然后點啟動:

image.png

 

這樣這個python程序就在后台運行了。如果我們要刪除服務,那么將第四步的操作改為:

nssm remove <服務名稱>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM