
有時候,需要對python學習程序項目進行打包,即僅打包python文件編譯后的pyc文件,就需要對python文件進行編譯。那么python學習如何編譯呢?一起來了解下吧:
python學習如何編譯?
編譯方法有兩種:
1、寫一個python簡本,對所需編譯的文件進行編譯。(針對比較多的文件,推薦該方法)比如:
import py_compile<br />
py_compile.compile("test.py")
2、直接使用python命令(若使用腳本進行打包,而且文件少,可使用該方法)。例子如下:
python -mpy_compile test.py
怎么編譯Python源代碼?
通常在 Windows 下安裝軟件,只需要下載可執行文件,一直下一步就可以完成安裝。而 Linux 下,你可以獲取軟件的源代碼,自行編譯生成可執行文件進行安裝。用源代碼有什么好處呢?你可以根據自己的需要對軟件進行修改,甚至提前修補 已經發現但廠商沒有更新 的漏洞。這也就是開源的好處。
源代碼就是用編程語言編寫好的程序,其實就是文本文件,可以通過文本編輯器進行編輯。而可執行文件是操作系統認識的二進制程序。要想將源代碼變成可執行文件,就需要對源代碼進行編譯。
C語言的編譯程序就是gcc
軟件的源代碼(文本文檔)+ 系統已有的函數庫,經過編譯器的編譯,生成可執行文件 函數庫是做什么的?如同 Python 會調用大量外部的模塊/庫幫助實現一些功能一樣,軟件也會用到系統的函數完成一些任務,所以需要在編譯時寫入,以便程序執行時調用。
一個軟件往往不僅有一個源代碼文件,如果手動對每一個源文件進行編譯,太累了,好在有一個非常有用的工具make,可以自動完成編譯的過程。那么,make根據什么進行編譯呢?他會在當前目錄下搜索 Makefile/makefile 文件,這個文件中提供了所需的所有內容。但這個文件并不是生來就有、一成不變的。
由于各種 Linux 系統內部環境不同,軟件開發者會編寫一個自動檢測環境是否符合要求,為每種環境生成特定 Makefile/makefile 文件的程序,就是configure。
值得一提的是,當源代碼修改后重新編譯時,make 能夠識別變動的部分,進行增量更新。
源代碼是純文本文件,如果軟件開發者直接提供這些純文本文件,會浪費開發者的帶寬,也使得用戶不易下載。
所以,出現了 Tarball 文件,就是將軟件的所有源代碼先以 tar 打包,然后用壓縮技術壓縮,通常使用 gzip,所以一般擴展名是*.tar.gz或*.tgz。不過后來出現了壓縮效率更高的 bzip2,所以擴展名也會有*.tar.bz2之類。
Tarball 文件通常包含:
./configure --enable-framework=/Users/ronald/Library/Frameworks
setup.py missing.append
刪除安裝目錄 rm -rf /usr/local/bin/xxx
64位系統如何編譯Python?
如果在64位系統下默認執行./configure編譯python會使用32位的動態庫,當安裝mod_wsgi或者mod_python時會出錯,這時候需要重新編譯python來解決此問題。
下載python源碼。比如2.6.5或2.6.6。
解壓后configure:
./configure --prefix=/usr/local --with-threads --enable-shared --enable-universalsdk
--prefix選項表示把目標編譯到/usr/local這個目錄中。
a. 如果只用./configure命令,那默認會編譯出靜態的.a以及32位的動態庫。 b. 最后一個選項非常重要。如果這個選項不加,那只會編譯出32位的庫。
3. make &&make install
這時執行python,很有可能會報一個錯:
libpython2.6.so.1.0:
cannotopen shared object file: No such file or directory
這是因為編譯的libpython2.6.so.1.0是在/usr/local/python2.6/lib里面,可以做一個到/usr/lib64的軟鏈接,或者直接把它復制過去就行了。
或者也可以這樣:
echo‘/usr/local/python2.6/lib’ > /etc/ld.so.conf.d/opt-python2.6.conf
接著執行
ldconfig
最后可以通過以下命令驗證是否存在64位的libpython:
ldconfig–p | grep python
看有沒有類似“libpython2.6.so.1.0(libc6,x86-64) => /usr/local/python2.6/lib/libpython2.6.so.1.0”的輸出。
注:尊重原創文章,轉載請注明出處和鏈接 http://m.dedgn.cn/news-id-24574.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注python培訓頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050