『壹』 怎麼把 python 打包成 exe 可執行文件
Python是一個腳本語言,被解釋器解釋執行。它的發布方式:
.py文件:對於開源項目或者源碼沒那麼重要的,直接提供源碼,需要使用者自行安裝Python並且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的)
.pyc文件:有些公司或個人因為機密或者各種原因,不願意源碼被運行者看到,可以使用pyc文件發布,pyc文件是Python解釋器可以識別的二進制碼,故發布後也是跨平台的,需要使用者安裝相應版本的Python和依賴庫。
可執行文件:對於非碼農用戶或者一些小白用戶,你讓他裝個Python同時還要折騰一堆依賴庫,那簡直是個災難。對於此類用戶,最簡單的方式就是提供一個可執行文件,只需要把用法告訴Ta即可。比較麻煩的是需要針對不同平台需要打包不同的可執行文件(Windows,Linux,Mac,...)。
本文主要就是介紹最後一種方式,.py和.pyc都比較簡單,Python本身就可以搞定。將Python腳本打包成可執行文件有多種方式,本文重點介紹PyInstaller,其它僅作比較和參考。
Freezing Your Code
各種打包工具的對比如下(來自文章Freezing Your Code):
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
py2app no no yes yes MIT no yes yes yes
PS.其中pyInstaller和cx_Freeze都是不錯的,stackoverflow上也有人建議用cx_Freeze,說是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。
安裝PyInstaller
對於那些網路比較穩定,能夠流暢使用pip源地址的用戶,直接下面的命令就可以搞定:
pip install pyinstaller
通常我們會下載源碼包,然後進入包目錄,執行下面的命令(需要安裝setuptools):
python setup.py install
安裝完後,檢查安裝成功與否:
pyinstaller --version
安裝成功後,就可以使用下面的命令了:
pyinstaller : 打包可執行文件的主要命令,詳細用法下面會介紹。
pyi-archive_viewer : 查看可執行包裡面的文件列表。
pyi-bindepend : 查看可執行文件依賴的動態庫(.so或.dll文件)
pyi-... : 等等。
使用PyInstaller
pyinstaller的語法:
pyinstaller [options] script [script ...] | specfile
最簡單的用法,在和myscript.py同目錄下執行命令:
pyinstaller mycript.py
然後會看到新增加了兩個目錄build和dist,dist下面的文件就是可以發布的可執行文件,對於上面的命令你會發現dist目錄下面有一堆文件,各種都動態庫文件和myscrip可執行文件。有時這樣感覺比較麻煩,需要打包dist下面的所有東西才能發布,萬一丟掉一個動態庫就無法運行了,好在pyInstaller支持單文件模式,只需要執行:
pyinstaller -F mycript.py
你會發現dist下面只有一個可執行文件,這個單文件就可以發布了,可以運行在你正在使用的操作系統類似的系統的下面。
當然,pyinstaller還有各種選項,有通用選項,如-d選項用於debug,了解pyInstaller執行的過程;還有一些針對不同平台的選項,具體用法可以訪問PyInstaller官方WIKI。
在執行pyInstaller命令的時候,會在和腳本相同目錄下,生成一個.spec文件,該文件會告訴pyinstaller如何處理你的所有腳本,同時包含了命令選項。一般我們不用去理會這個文件,若需要打包數據文件,或者給打包的二進制增加一些Python的運行時選項時...一些高級打包選項時,需要手動編輯.spec文件。可以使用:
pyi-makespec options script [script ...]
創建一個.spec文件,對於手動編輯的.spec文件,我們可以使用下面任意一條命令:
pyinstaller specfile
pyi-build specfile
PyInstaller的原理簡介
PyInstaller其實就是把python解析器和你自己的腳本打包成一個可執行的文件,和編譯成真正的機器碼完全是兩回事,所以千萬不要指望成打包成一個可執行文件會提高運行效率,相反可能會降低運行效率,好處就是在運行者的機器上不用安裝python和你的腳本依賴的庫。在Linux操作系統下,它主要用的binutil工具包裡面的ldd和objmp命令。
PyInstaller輸入你指定的的腳本,首先分析腳本所依賴的其他腳本,然後去查找,復制,把所有相關的腳本收集起來,包括Python解析器,然後把這些文件放在一個目錄下,或者打包進一個可執行文件裡面。
可以直接發布輸出的整個文件夾裡面的文件,或者生成的可執行文件。你只需要告訴用戶,你的應用App是自我包含的,不需要安裝其他包,或某個版本的Python,就可以直接運行了。
需要注意的是,PyInstaller打包的執行文件,只能在和打包機器系統同樣的環境下。也就是說,不具備可移植性,若需要在不同系統上運行,就必須針對該平台進行打包。
『貳』 Python引入第三方庫之後能轉為exe文件嗎
可以 的。
我經常使用的是 py2exe 或 PyInstaller
這兩個都可以,只是偶爾會出一點問題;可能是用法不對;
一、安裝 py2exe
cmd 到 python 安裝目錄下:Scripts 文件目錄
D:\install\python\Scripts>pip install py2exe
二、把 需要轉換的文件放到 python 安裝目錄 (D:\install\python)
三、在 D:\install\python 新建文件:setup.py, 並輸入以下內容:
# -*- coding:utf-8 -*-
# 經過測試,把多個文件合並到一起會出錯
from distutils.core import setup
import py2exe
# 製作 exe 文件 :ok
# console - windows 控制台程序
# windows - windows 窗口程序
# <需要製作的python文件.py >在python安裝目錄:即:D:\install\python
setup(console = ["需要製作的python文件.py"])
# 合並 多個文件 製作成一個exe, 可能會有問題
options = {"py2exe":{"compressed": 1, "optimize": 2, "bundle_files": 1}}
setup(console = ["需要製作的python文件.py"], options=options, zipfile=None)
四、製作完成後,結果在:D:\install\python\dist 下
一、安裝 PyInstaller
cmd 到 python 安裝目錄下:Scripts 文件目錄
D:\install\python\Scripts>pip install PyInstaller
會安裝多個模塊,只要不報錯就不用管
1. 打包:需要製作的python文件.py(可以任意目錄,目錄最好不包括中文)
2. 該程序使用了第三方庫: xlrd, xlwt, xlutils
3. cmd 到:安裝目錄下:Scripts目錄,執行:
D:\install\python\Scripts>pyinstaller -F -p D:\install\python\Lib\site-packages "需要製作的python文件.py"
說明:-w : windows 窗口程序,沒有-w : windows 控制台程序
-F :打包到一個exe文件中
-p : 指定第三方庫目錄
『叄』 怎樣用python寫文件
這個應該打開之後有會有讓你讓你寫字的,然後你就可以把你想寫的寫上。
『肆』 如何創建python源代碼文件
打開Eclipse,選擇菜單中【file】》》new》》other
選擇Python選項,然後選擇project mondel
輸入project name項目名稱,運行IDE根據搭建環境選擇版本
這里可以直接點擊next,下一步
然後直接點擊【是】,如果是【否】,開發環境將不是以Python環境
6
Python項目創建成功,可以進行Python代碼編寫
『伍』 怎樣用python編寫一個可擴展更新的exe程序
1. 手動製作python的exe可執行程序Python沒有內建一個編譯為exe的功能。給python程序的部署帶來不少的麻煩。所以就會出現一些py2exe之類的很不錯的工具,用於自動把.py文件編譯為.exe文件。
最近抽空研究了一下手動實現類似py2exe的功能,希望加強對python的了解。結果還相當不錯。把結果記錄下來,與大家共享。
1.1. 原理文中所描述的方法,基於python的以下幾個功能
1) python程序運行時,會在sys.path指定的路徑中查找庫文件。
2) python從2.3開始,支持從zip文件中import庫(支持.py,.pyc和.pyo,但不支持.pyd)
3) python提供C API,讓c語言的程序,可以很方便的調用python的程序
1.2. 實際步驟註:假設python安裝在c:\python25目錄中,最後的可執行文件放到d:\dist目錄中
1) 先去c:\python25\Lib目錄,把所有文件都復制出來,比如復制到d:\pythonlib目錄中
『陸』 用 Python 庫 PySimpleGUI 製作自動化辦公小軟體
(2)持續顯示界面(Persistent window)
官網默認的庫的縮寫為sg,使用時建議保持統一,也是使用sg
彈窗類型:(第一種和第二種是一致的)
最後一個執行後程序會在2s左右自動退出,除了以上的簡單的默認函數外,還可以手動設置參數,相關的參數如下
比如設置一個定製化的小窗口,進行相關參數的添加
輸出結果:(第一個參數就是要顯示的信息,可以是單個,也可多個字元串,多個字元串時候,默認換行,如果是單個字元串可以通過line_with指定每行的寬度)
當第一個參數是多個字元串時,自動換行顯示(由於自動的窗體長寬很小,所以標題就沒有看到,但不是代表不顯示,下面的示例中就可以看到)
2.3 文字內容彈窗
採用 popup_scrolled 方法,括弧中添加要顯示的內容即可
輸出結果為:(這里的標題就正常的顯示出來了)
這個文字內容彈窗裡面也有相關的設置參數,可以根據自己的需要進行設置,參數如下:(注意之前的彈窗的參數也可以在這類彈窗中使用,比如剛剛用的title)
2.4 獲取用戶輸入的彈窗
採用 popup_get_text 方法,括弧內容有點類似 input 語句中的提示語,提醒用戶輸入
輸出結果為:(當點擊Ok時候控制台輸出端就會獲取到用戶輸入的文字,如果是點擊Cancel,輸出端為None,這里執行了兩次用戶輸入彈出的指令,當第一次輸入後點擊Ok會自動彈出第二個窗口)
該類彈窗也有自己特定的參數供選擇,比如既然進行輸入的操作,有時輸入密碼時候就不希望別人看到,就可以採用輸入的顯示方式,如下
測試進行密碼隱藏輸入,可以直接順勢將用戶輸入的密碼也以彈窗的形式
直接採用 sg.popup_get_file 方法,括弧裡面的內容也是輸入的提示語
選擇後就會把詳細的地址直接顯示在輸入框中,如下
那麼同樣該類彈出也有自己的特有屬性參數設置,具體如下。裡面的每個參數幾乎都是超級常用的參數,可以自行測試一下。
默認後綴,這個參數也是常用的,比如在sublime中點擊另存為時候,本身是py文件,在給文件命名的時候只需要輸出文件名,後綴自動給添加上去了。
2.6 文件夾選擇窗口
採用 sg.popup_get_folder 方法,括弧裡面的內容也是輸入的提示語。執行程序後會彈出選擇文件的窗口,滑鼠選擇後就會把文件夾的路徑添加到輸入
採用 sg.one_line_progress_meter 方法,括弧中輸入相關的參數設置內容
輸出結果為:(會進行動態載入,直到達到100%)
當然此類彈窗也有自己特有的參數設置,如下。比如常見的設置豎直的還橫向的,滾動條的上下限等。
比如嘗試一下不同參數的組合輸出
輸出結果為:
3 製作簡易壓縮軟體
(1)軟體運行後彈出窗口讓用戶選擇一個文件夾
(2)用戶選擇後再彈出窗口讓用戶選擇壓縮包保存的位置和名稱
(3)用戶輸入完成後將該文件夾內所有的文件進行壓縮打包
(4)完成壓縮後再彈出一個窗口告訴用戶這個壓縮包的體積大小
參考代碼:(主要是細節部分,對於壓縮路徑的設置,需要進行處理一下,不然最後解壓縮的會出現很多層級的不必要文件夾)
輸出結果演示如下:(完美,撒花 ヽ( )ノ
『柒』 怎麼用python給軟體寫一個安裝包文件
首先要定義你所謂的安裝包到底是什麼 如果說是把python代碼打包成exe,一般是用pyinstaller(你說的自己寫,沒必要,這個是開源的,但代碼量很大)
除了以exe的方式安裝,還有種python的安裝包可以理解為把你的代碼製作成python庫,供別人使用(類似pip install ),這個你可以去pypi官網上找到相應的方法
『捌』 如何將python模塊放置到pypi庫,如何編寫python模塊的安裝文件使得其他開發者直接easy_install即可
不用easy_install,那個麻煩。直接用python 自帶的setup.py就可以。你自己配置一個setup.py,看幫助,或者是找一個例子,分開來看。很容易的。10分鍾就會了。
如果用pypy setup.py install,那麼安裝到pypy庫里。 如果用python setup.py install 就會安裝到python目錄里。
『玖』 如何把python庫文件做成動態鏈接庫
你只能用python調用dll庫,想那些底層的東西一般都是用c來寫的所以下面我給您提供一個調用方式
import ctypes
dll = ctypes.WinDLL('yourDll.dll')
print dll.Sun(1+2)
print dll.count('abacadeafg',ord('a'))