python下編譯py成pyc和pyo
其實很簡單,
用
python -m py_compile file.py
python -m py_compile /root/src/{file1,file2}.py
編譯成pyc文件。
也可以寫份腳本來做這事:
Code:
import py_compile
py_compile.compile('path') //path是包括.py文件名的路徑
用
python -O -m py_compile file.py
編譯成pyo文件。
1.其中的 -m 相當於腳本中的import,這里的-m py_compile 相當於上面的 import py_compile
2.-O 如果改成 -OO 則是刪除相應的 pyo文件,具體幫助可以在控制台輸入 python -h 查看
========================
from:http://blogold.chinaunix.net/u3/93255/showart_1944929.html
什麼是pyc文件
pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的,這個是類似於JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯後的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的 python是無法執行的。
什麼是pyo文件
pyo是優化編譯後的程序 python -O 源文件即可將源程序編譯為pyo文件
什麼是pyd文件
pyd是python的動態鏈接庫。
為什麼需要pyc文件
這個需求太明顯了,因為py文件是可以直接看到源碼的,如果你是開發商業軟體的話,不可能把源碼也泄漏出去吧?所以就需要編譯為pyc後,再發布出去。當然,pyc文件也是可以反編譯的,不同版本編譯後的pyc文件是不同的,根據python源碼中提供的opcode,可以根據pyc文件反編譯出 py文件源碼,網上可以找到一個反編譯python2.3版本的pyc文件的工具,不過該工具從python2.4開始就要收費了,如果需要反編譯出新版本的pyc文件的話,就需要自己動手了(俺暫時還沒這能力^--^),不過你可以自己修改python的源代碼中的opcode文件,重新編譯 python,從而防止不法分子的破解。
生成單個pyc文件
python就是個好東西,它提供了內置的類庫來實現把py文件編譯為pyc文件,這個模塊就是 py_compile 模塊。
使用方法非常簡單,如下所示,直接在idle中,就可以把一個py文件編譯為pyc文件了。(假設在windows環境下)
import py_compile
py_compile.compile(r'H:\game\test.py')
compile函數原型:
compile(file[, cfile[, dfile[, doraise]]])
file 表示需要編譯的py文件的路徑
cfile 表示編譯後的pyc文件名稱和路徑,默認為直接在file文件名後加c 或者 o,o表示優化的位元組碼
from:http://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html
B. 如何編譯Python程序
1、說明
編譯python程序就是把python腳本轉換成操作系統中的可執行文件,一般使用pyinstaller來完成。
2、步驟
1)安裝pyinstaller
使用pip install pyinstaller命令來安裝
2)編譯腳本
python安裝目錄\script\pyinstaller 腳本文件名
3)完成
執行腳本後就可以在腳本目錄生成dist目錄,目錄就有打包好的可執行文件
3、備注
pyinstaller參數
-w指令
直接發布的exe應用帶命令行調試窗口,在指令內加入-w命令可以屏蔽
-F指令
注意指令區分大小寫。這里是大寫。使用-F指令可以把應用打包成一個獨立的exe文件,否則是一個帶各種dll和依賴文件的文件夾
-p指令
這個指令後面可以增加pyinstaller搜索模塊的路徑。因為應用打包涉及的模塊很多。這里可以自己添加路徑。不過經過筆者測試,site-packages目錄下都是可以被識別的,不需要再手動添加
C. python源程序執行的方式
python源程序執行的方式如下:
1、在命令行輸入ipython或ipython3進入互動式shell環境,如果不行的話需要安裝ipython和python鏡像,配置方式:pip3 install ipython -i ctrl+D或者exit 推出ipython ipython的優點:支持自動補全和執行linux命令。
2、在命令行窗口輸入python (官方的shell),在這里可以直接輸入python程序代碼,退出用exit() 或者 ctrl+D。
3、集成開發環境:PyCharm 類似IDEA,推薦教程: 《Python教程》。
編譯執行
所謂編譯執行就是源代碼經過編譯器編譯處理,生成目標機器碼,就是機器能直接運行的二進制代碼,下次運行時無需重新編譯。不過它是針對特定CPU體系的,這些目標代碼只能在特定平台執行。
如果這個程序需要在另外一種 CPU 上面運行,這個代碼就必須重新編譯。它不具備可移植性,但是執行速度快,C、C++這類語言屬於編譯型語言。
D. 綆榪皃ython紼嬪簭鐨勮繍琛岃繃紼
Python紼嬪簭鐨勮繍琛岃繃紼嬪彲浠ュ垎涓轟互涓嬪嚑涓姝ラわ細
1. 婧愪唬鐮佺殑緙栧啓錛氶栧厛錛岀▼搴忓憳浼氫嬌鐢ㄦ枃鏈緙栬緫鍣錛堝係ublime Text銆丯otepad++銆乂isual Studio Code絳夛級緙栧啓Python浠g爜錛岃繖浜涗唬鐮佽淇濆瓨涓.py鏂囦歡銆
2. 婧愪唬鐮佺殑緙栬瘧錛歅ython瑙i噴鍣ㄤ細灝嗘簮浠g爜杞鎹涓哄瓧鑺傜爜錛坆ytecode錛夛紝榪欐槸涓縐嶄綆綰ц璦錛屽彲浠ヨ玃ython瑙i噴鍣ㄦ墽琛屻傝繖涓榪囩▼縐頒負緙栬瘧銆
3. 瀛楄妭鐮佺殑鎵ц錛歅ython瑙i噴鍣ㄤ細鎵ц屽瓧鑺傜爜錛岃繖鏄鍦ㄥ唴瀛樹腑榪涜岀殑銆侾ython瑙i噴鍣ㄤ細鏍規嵁瀛楄妭鐮佺殑鎸囦護鏉ユ墽琛岀▼搴忋
4. 瀵硅薄妯″瀷鐨勮繍琛錛歅ython鏈変竴涓瀵硅薄妯″瀷錛屽畠鍏佽窹ython浠g爜鍜孭ython鏁版嵁綾誨瀷錛堝傚垪琛ㄣ佸瓧鍏搞佸瓧絎︿覆絳夛級榪涜屼氦浜掋傝繖涓妯″瀷鍦ㄨ繍琛屾椂鍔ㄦ佸湴鍒涘緩鍜屼慨鏀瑰硅薄銆
5. 寮傚父澶勭悊錛歅ython紼嬪簭涓鍙鑳戒細鍙戠敓寮傚父錛岃В閲婂櫒浼氭崟鑾峰苟澶勭悊榪欎簺寮傚父錛屼互淇濊瘉紼嬪簭鐨勭ǔ瀹氭с
6. 紼嬪簭緇撴潫錛氬綋鎵鏈夐渶瑕佹墽琛岀殑鎿嶄綔閮藉畬鎴愬悗錛孭ython紼嬪簭灝變細緇撴潫銆
褰撹繍琛孭ython紼嬪簭鏃訛紝鎴戜滑浼氶亣鍒板嚑縐嶄笉鍚岀駭鍒鐨勮繍琛岀幆澧冿細
浜や簰寮忕幆澧冿細褰撲綘鎵撳紑涓涓狿ython浜や簰寮忕幆澧冿紙濡侷Python鎴朠ython shell錛夋椂錛屽彲浠ョ洿鎺ヨ緭鍏ュ拰鎵ц孭ython浠g爜銆傝繖涓嶉渶瑕佸皢浠g爜淇濆瓨涓.py鏂囦歡錛屽洜涓轟綘鍙浠ョ洿鎺ュ湪鍛戒護琛屼腑杈撳叆騫舵墽琛屻
鑴氭湰鐜澧冿細褰撲綘灝哖ython浠g爜淇濆瓨涓.py鏂囦歡鏃訛紝浣犲彲浠ュ湪鍛戒護琛屼腑鐩存帴榪愯岃繖涓鏂囦歡銆傝繖浼氳皟鐢≒ython瑙i噴鍣ㄦ潵鎵ц岃ユ枃浠朵腑鐨勪唬鐮併
IDE鎴栫紪杈戝櫒鐜澧冿細璁稿氶泦鎴愬紑鍙戠幆澧冿紙IDE錛夊拰鏂囨湰緙栬緫鍣錛堝侾yCharm銆乂isual Studio Code絳夛級鎻愪緵浜嗚繍琛孭ython浠g爜鐨勫姛鑳姐傝繖浜涘伐鍏烽氬父浼氬皢浣犵殑浠g爜淇濆瓨涓.py鏂囦歡錛屽苟鍦ㄩ渶瑕佹椂鑷鍔ㄨ皟鐢≒ython瑙i噴鍣ㄦ潵鎵ц屼唬鐮併
浠ヤ笂灝辨槸Python紼嬪簭鐨勮繍琛岃繃紼嬨傝繖涓榪囩▼娑夊強鍒頒簡璁稿氬簳灞傛傚康錛屽傜紪璇戙佸瓧鑺傜爜銆佸硅薄妯″瀷絳夛紝榪欎簺鏄鐞嗚ВPython璇璦鐨勯噸瑕侀儴鍒嗐傚笇鏈涜繖涓鍥炵瓟鑳藉熷府鍔╀綘鏇村ソ鍦扮悊瑙Python紼嬪簭鐨勮繍琛岃繃紼嬨
E. python如何運行程序
安裝並配置完成之後,我們就可以編寫第一個python程序。學過其他語言的兄弟姐妹們,都知道語言的入門程序就是hello world。那麼,我們這里也以hello world來拋磚引玉,打開python學習的大門。
python運行有兩種方式,一種是在python互動式命令行下運行;另一種是使用文本編輯器,在命令行中直接運行。
注意:以上兩種運行方式,都是以CPython解釋器來編譯運行的。當然也可以將python代碼寫入到eclipse中,使用JPython解釋器運行,需要自己配置環境。(推薦學習:Python視頻教程)
一、命令行與互動式命令行
首先要搞清楚這個命令行的概念。
1.命令行
定義:出現類似「C:\>」,則是在Windows提供的命令行模式
進入模式的方式:Windows中,直接win+r鍵進入
2.互動式命令行
定義:出現「>>>」,則是python的互動式命令行
進入模式的方式:Windows命令行中輸入python即可
二、互動式命令行中運行python代碼
cmd窗口中,輸入python後,進入python互動式命令行。直接輸入代碼:
print 『hello world!』
python-23.png
可以看到界面上運行結果,表示運行成功!
在Python的互動式命令行寫程序,好處是一下就能得到結果,壞處是沒法保存,下次還想運行的時候,還得再敲一遍。
所以,實際開發的時候,我們總是使用一個文本編輯器來寫代碼,寫完了,保存為一個文件,這樣,程序就可以反復運行了。
三、命令行運行python代碼
1.python代碼編寫及保存
我們將「hello world!」程序用文本編輯器寫出來,保存下來,並命名,這里我們命名為hello.py,保存到F:\workspace。
命名時,要注意:
1)文件要以.py結尾,其他都不可以
2)文件名只能是英文字母、數字和下劃線的組合。
文本編輯器推薦:Notepad++、Sublime Text
2.python代碼運行
在命令行模式中,輸入python F:\workspace\hello.py,即可運行成功。
運行時,要注意:
1)python文件存儲路徑是相對路徑,運行時,一定要說明python文件的存儲路徑,
當然,用Python開發程序,完全可以一邊在文本編輯器里寫代碼,一邊開一個互動式命令窗口,在寫代碼的過程中,把部分代碼粘到命令行去驗證,事半功倍!