樹莓派(Raspbian系統)中使用pyinstaller封裝Python代碼為可執行程序


一、前言 

  將做好的Python軟件運行在樹莓派上時,不想公開源碼,就需要對文件進行封裝(或稱打包),本文主要介紹使用pyinstaller封裝Python代碼為可執行程序。

  Python是一個腳本語言,被解釋器解釋執行。它的發布方式:(來自文章david++

  • .py文件:對於開源項目或者源碼沒那么重要的,直接提供源碼,需要使用者自行安裝Python並且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的)

  • .pyc文件:有些公司或個人因為機密或者各種原因,不願意源碼被運行者看到,可以使用pyc文件發布,pyc文件是Python解釋器可以識別的二進制碼,故發布后也是跨平台的,需要使用者安裝相應版本的Python和依賴庫。在樹莓派上運行.py文件時,有時會自動生成.pyc的文件,並且該文件如果作為模塊,可被其他文件正常引用。

  • 可執行文件:對於非碼農用戶或者一些小白用戶,你讓他裝個Python同時還要折騰一堆依賴庫,那簡直是個災難。對於此類用戶,最簡單的方式就是提供一個可執行文件,只需要把用法告訴Ta即可。比較麻煩的是需要針對不同平台需要打包不同的可執行文件(Windows,Linux,Mac,...)。

  本文主要介紹第三種方式,之前在運行.py或.pyc文件時,需要在命令行中輸入:python filename.py,通過對.py文件封裝(不能封裝.pyc文件),直接用鼠標雙擊生成的文件,可直接運行代碼。

  各種打包工具的對比如下:

Solution Windows Linux OS X Python 3 License One-file mode Zipfile import Eggs pkg_resources support
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
pyInstaller yes yes yes no GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no

  樹莓派的官方推薦系統為Raspbian(基於Debian系統),本文采用pyinstaller工具

二、安裝pyinstaller

  方式一:直接使用pip安裝(強烈不推薦,可以安裝成功,但是不能直接運行):

$pip install pyinstaller

  方式二:

  1.官方下載源碼(點擊鏈接即可下載,支持Python版本 2.7, 3.4–3.7):https://github.com/pyinstaller/pyinstaller/tarball/develop

  2.打開終端,cd到下載的壓縮包(例如我直接下到桌面上),解壓文件:

$cd Desktop
$tar -zxvf PyInstaller-3.4

  瀏覽了無數博客,大多到了這一步,就直接開始打包.py文件,但是在樹莓派上會不斷報錯(報錯內容不記得了,但是生成的兩個文件夾中的dist內沒有文件),經過痛苦的找答案過程,終於在官方文檔中找到了答案(文檔鏈接):

$cd bootloader
$python ./waf distclean all

  3.打包文件:

  我是用來打包web項目的啟動文件(項目目錄:/home/pi/Desktop/myproject,啟動文件為:web_server.py):

$python /home/pi/Desktop/PyInstaller-3.4/pyinstaller.py -F /home/pi/Desktop/myproject/web_server.py

  在項目目錄中生成兩個文件夾及一個web_server.spec文件,其中在dist文件夾中有一個可執行文件。

  將此文件復制到上級目錄(也就是跟web_server,py的同級目錄下),雙擊執行即可。

 

 (如運行web的啟動程序報import錯誤,建議采用間接方式啟動,如:新建web_server01.py,代碼為:

import os
os.system('python /home/pi/Desktop/myproject/web_server.pyc')

將該文件封裝,運行封裝后的文件,可解決此問題)


免責聲明!

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



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