導航:首頁 > 源碼編譯 > 編譯python

編譯python

發布時間:2022-01-20 12:43:32

A. python需要編譯

一個經常聽見的問題,那就是:Python是解釋型的語言嗎?它會被編譯嗎?這個問題沒有想像中那麼好回答。和很多人認識世界一樣,習慣以一個簡單的模型去評判一些事物。而事實上,裡麵包含了很多很多的細節。
通常的說法,編譯代表著將一個高級語言轉化為 CPU 能執行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結果是一個二進制可執行文件,這時你的系統可直接運行這個程序。
與此相對的,解釋的意思是這樣的:程序運行時每次讀源文件中的一行代碼,並執行相應的操作,就這樣一行一行的重復下去。當然,所謂的腳本語言就是這么運行的。
但事實上,上面的定義有太多的局限。一門真正的語言,為了擁有更多有用和強大的特性,通常採用了各種各樣的實現方式。我們可以將編譯理解為更通用一些:將一種語言轉化為另一種語言形式。通常來說,源語言比目標語言要更高級一些,比如將 C 轉化為機器碼。當然,JavaScript 8 到 JavaScript 5 的轉化也算是一種編譯。
在Python中,源代碼會被編譯為更低級的一種形式,我們稱之為位元組碼。位元組碼是一串指令,和 CPU 的指令集類似。但是位元組碼並不直接被 CPU 執行,而是在虛擬機中執行的。當然,這里的虛擬機並不模仿整個操作系統的環境,只是提供了位元組碼執行的一個環境。
下面我們看 Python 的一小段代碼以及它對應的位元組碼
看了位元組碼的內容後,我們就知道 f'...' 這種格式化字元串的形式的運行原理,就是將裡面的字元串轉化為一系列的字面字元串與變數,然後使用 + 號連接起來。
dis 是 Python 標准庫中反匯編模塊,它可以展示 Python 代碼的位元組碼信息。上面提到的執行位元組碼的虛擬機,可以用任意的語言實現,包括 Python 自己。有興趣的可以去 GitHub 上看下這個項目 nedbat/byterun 。這個項目可以用來學習,但不適用於生產環境。
不過,我們運行 Python 時完全感受不到它的編譯過程,沒有顯示的調用什麼編譯程序,僅僅是簡單的執行 .py 文件,編譯都是需要時自動編譯的。這和 JAVA 不同,當你每次寫完 JAVA 代碼要執行時,都要手動將其編譯為 .class 文件,然後執行。也正是這個原因,JAVA 被稱為編譯型語言,而 Python 被叫做解釋型語言。但事實上,兩種語言執行時都會先編譯成位元組碼,然後交給虛擬機執行。
Python還有一個重要的特性,就是互動式命令行。你可以敲入一行 Python 語句,然後立刻回車執行。實際上,即使是這個過程,Python 同樣是先轉為位元組碼,然後執行。而這個互動式命令行這個特性,在很多編譯型語言里是沒有的。同樣因為沒有顯示的調用編譯程序,很多人將執行Python源文件的程序叫做Python解釋器。
即使比較簡略,但還是補充下。部分編譯型語言比如 C 或者 JAVA 也有互動式命令行,但這些並不是這些語言的重心。JAVA 剛開始是編譯成位元組碼然後執行,後面有了即時編譯技術( JIT )可以直接編譯成機器碼,與 C 類似。
從上面的描述可以看出,不管是解釋還是編譯,並沒法完全分離開來。很多時候,我們想用一些詞將現有的編程語言分個類,但事實上要辦到這一點太難了。
最後要說明的是,你的代碼是怎麼執行的只是語言的實現問題,並非語言的特徵。上文中,我們討論的是 Python ,但實際上是 CPython 的描述。CPython 是一個解釋器,之所以這么叫,是因為這個解釋器是用 C 編寫的,這也是 Python 默認的解釋器。當然還有其它很多解釋器,比如,PyPy 就是另一種解釋器,使用了 JIT 技術,運行速度相比 CPython 有較大提升。
回到標題中的問題,Python之所以稱為解釋型語言,是因為它沒有顯示的調用編譯操作,表現出解釋型的特性比較多而已。但事實上,編譯是存在的,具體怎麼編譯就看語言的實現了,也就是解釋器的設計。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python需要編譯么的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

B. python如何編譯使用源文件

因為系統找不到python.exe,所以說"NO SUCH……「
你需要進入python目錄
c:\python25>
這樣的狀態輸入python XXX.py 才會認
當然你也可以在系統變數裡面把PYTHON的工作目錄添加進去。
另外,py文件最好也放到PYTHON目錄,免得python找不到。

另外,由於PYTHON在linux下使用的很多,WINDOWS下應用較少。作者的工作環境就是linux,你看這句#!/usr/bin/python。

針對 擰發條的鳥 和 azaleammm 的回復:
1、對系統(WINDOWS)來說,默認查找目錄是當前目錄和WINDOWS\ 、windows\system32目錄。不在這幾個目錄中的EXE是提示「XXX不是一個有效的內部或外部命令或可執行程序」(十分抱歉!現在WINDOWS系統說的不是NO SUCH FILE OR DIRECTORY,我和其他的什麼系統計混了,感謝azaleammm糾正)
進入PYTHON25目錄輸入命令可以解決。
對PYTHON來說,默認查找目錄是PYTHON25\下的所有子目錄。不在這幾個目錄中提示的是:
「C:\Python25\python.exe: can't open file 'XXX': [Errno 2] No such file or director」
你應該把hellow文件放在PYTHON能夠找到的目錄,比如C:\PYTHON25\

#!usr/bin/python這句話不是必須的,一般只是LINUX下的作者習慣,我從來都不寫
# Filename : helloworld.py 我也從來都不寫。
因為LINUX下是不安擴展名而是按文件類型識別文件的,如果文件名不是*.py,LINUX根據這兩句注釋識別文件類型並自動選擇程序打開。

你直接雙擊的話到是可以執行,但是執行完後他就自動關閉了,所以一閃就沒。實際如果你的機器很爛就可以看到屏幕顯示了HELLOW WORLD。

如果你實在搞不清楚,就在IDLE中,文件〉新建〉
然後再新窗口中把代碼加入進去,然後點擊上面的運行(RUN),或者按F5

IDLE 2.5……恕我火星,是python 2.5裡面帶的那個IDLE吧,版本應該是1.2。
有RUN,啊,當然不是在交互模式下了(交互下從來就沒有),是在編輯模式下。
FILE〉NEW WINDOW ,
看看這一貼:
http://..com/question/48354047.html
RUN前PYTHON讓你存,你就存,存完交互那裡就有了(白底藍字的HELLO WORLD)

555555明明只是一個HELLOW WORLD而已……為什麼說了這么多話。還有什麼問題給我發消息。

C. linux下用什麼編譯python

一般是用GCC來編譯
python 在linux下 的編譯安裝
1、安裝
[root@auh1st ~]# cd /usr/local/src/
[root@auh1st src]# ll
總計 0
[root@auh1st src]# wget http://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2
[root@auh1st src]# tar -jxf Python-2.6.tar.bz2
[root@auh1st src]# ll
總計 10724
drwxrwxr-x 17 1000 1000 4096 2008-10-03 Python-2.6
-rw-r--r-- 1 root root 10957859 2008-10-03 Python-2.6.tar.bz2
[root@auh1st Python-2.6]# ./configure --prefix=/usr/local/python-2.6
make && make install
2、檢測和設置環境變數
[root@auh1st bin]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@auh1st bin]# PATH="$PATH":/usr/local/python-2.6/bin
[root@auh1st bin]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python-2.6/bin
3、刪除系統已有的,將新版本覆蓋
cd /usr/bin
rm -rf python
ln -s /usr/local/python-2.6/bin/python ./python
[root@auh1st ~]# python
Python 2.6 (r26:66714, Sep 25 2013, 10:14:04)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "right", "credits" or "license" for more information.
>>>
至此python新版 安裝成功

D. python如何編譯

編寫的話,拿什麼編輯器編寫都可以。
如果是編譯的話,python是不需要編譯的,直接運行即可。
運行的話,你需要安裝一個python的解釋器,可以是官方python,actiePython或者其他版本的python。
然後你可以選擇python自帶的IDLE編寫,也可以在命令行下輸入python進入交互shell進行編寫,當然也可以用支持python語言的IDE進行編寫。

E. 如何編譯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目錄下都是可以被識別的,不需要再手動添加

F. 什麼軟體可以編譯Python

實際上python 是腳本語言解釋執行的,並不存在編譯這個概念。

python -m py_compile file.py
python -m py_compile {file1,file2}.py
編譯成pyc文件。
pyc是一種二進制文件,是由py文件經過編譯後,生成的文件,是一種byte code,py文件變成pyc文件後,載入的速度有所提高,而且pyc是一種跨平台的位元組碼,是由python的虛擬機來執行的


python -O -m py_compile file.py
編譯成pyo文件。
pyo是優化編譯後的程序 python -O 源文件即可將源程序編譯為pyo文件

還有就是第三方工具如:py2exe, pyinstaller等可把你的腳本打包成執行文件。

1、下載pyinstaller
目前pyinstaller支持的python版本為2.3-2.7,可以到http://www.pyinstaller.org/官網下載。
2、安裝
下載完成後,解壓即可。
3、pyinstaller使用方法
使用也非常的簡單,cmd下進入解壓出來的目錄,執行如下命令。
python pyinstaller.py [opts] yourprogram.py

主要選項包括:
-F, –onefile 打包成一個exe文件。
-D, –onedir 創建一個目錄,包含exe文件,但會依賴很多文件(默認選項)。
-c, –console, –nowindowed 使用控制台,無界面(默認)
-w, –windowed, –noconsole 使用窗口,無控制台

更詳細的使用方法請參考下載包里的doc目錄下的Manual.html文件。

G. 如何編譯Python程序生成.pyc文件

pyc文件就是
py程序編譯後得到的位元組碼文件
(py->pyc),python為了提高運行效率也會進行編譯,有時候編譯出pyc文件後,刪除py文件也不會出錯助於pyc文件的產生,給樓主舉例加入你有一個邏輯文件abcd.py,裡面有很多函數A,B,C,D,這個時候,如果你有一個test腳本去導入了abcd.py,只要你運行test腳本,在adcd.py目錄下就會生成一個abcd.pyc文件,而不管你是否需要調用A,B,C,D函數

H. python在那裡編譯和執行

首先python是解釋執行的,IDLE是集成開發環境,使用方法:
File->New Window->寫代碼
Run->Run mole

I. 如何編譯Python使之成為可執行程序

Python是一個強大的工具,可惜不是每個人的計算機裡面都有安裝。當您寫了一個好用的工具。要如何讓那些沒有安裝Python的人使用你的工具呢?
對於這樣一個需要standalone exectuable環境的需求,直到撰寫經驗為止,只看到兩個比較好用且有持續維護的套件。一個是py2exe。另外一個就是本經驗要介紹的PyInstaller。
1
PyInstaller安裝

2

最新版本:PyInstaller 2.0
3

直接「解壓縮」之後即可使用,解壓到您想讓他在的路徑即可
END

PyInstaller配置

1
事先寫好py程序
2

在命令行執行:python Makespec.py --console --onefile NotePad\notepad.py
報錯:Configfile is missing or unreadable. Please run Configure.py before building
3

在命令行執行:Configure.py
報錯:Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4

安裝最新版本的 pywin32-217.win32-py2.7.exe
END

PyInstaller使用

命令行中運行
目錄切換到PyInstaller的安裝目錄「E:\pyinstaller-1.5\pyinstaller-1.

在PyInstaller的安裝目錄下新建一個文件夾(比如NotePad), 然後將要轉換的py腳本放到文件夾里(notepad.py)
E:\pyinstaller-1.5\pyinstaller-1.5>python Makespec.py --console --onefile NotePad\notepad.py

E:\pyinstaller-1.5\pyinstaller-1.5>python Build.py NotePad\notepad.spec

驗證exeE:\pyinstaller-1.5\pyinstaller-1.5>

E:\pyinstaller-1.5\pyinstaller-1.5\NotePad\dist\notepad.exe 0 0 100(成功)

查看生成的文件,生成的中間文件spec
查看生成的文件,生成的最終文件exe

END

注意事項

在轉換之前要確保py程序可以正常通過
如果轉換過程中出現什麼錯誤,用搜索引擎搜索解決一下

J. 如何在Python中實現多文件編譯

如果你要用到那個文件代碼,就在主文件里寫上import
舉個例子
A.py
B.py
我的主模塊在A里,A要調用B里的函數或者類,那麼在A中寫import B.py
這樣編譯時就會編譯用到B中的部分代碼。
另外說一句,我對python感覺是運行時用不到的代碼,它就不編譯。好像是編編譯邊執行的那種吧

閱讀全文

與編譯python相關的資料

熱點內容
listsortjava 瀏覽:180
plc閃光電路編程實例 瀏覽:297
socket編程試題 瀏覽:201
華為的伺服器怎麼設置從光碟機啟動 瀏覽:867
程序員真的累嗎 瀏覽:323
學信網app為什麼刷臉不了 瀏覽:871
天蠍vs程序員 瀏覽:991
單片機下載口叫什麼 瀏覽:186
程序員的道 瀏覽:924
雲伺服器不實名違法嗎 瀏覽:556
怎樣查看文件夾圖片是否重復 瀏覽:993
文件怎麼導成pdf文件 瀏覽:806
打開sql表的命令 瀏覽:101
安卓手機如何面部支付 瀏覽:37
天元數學app為什麼登錄不上去 瀏覽:822
明日之後為什麼有些伺服器是四個字 瀏覽:103
安卓系統l1是什麼意思 瀏覽:25
伺服器一直崩應該用什麼指令 瀏覽:924
cm202貼片機編程 瀏覽:729
php構造函數帶參數 瀏覽:179