c調(diào)用python python有沒有辦法能夠編譯成DLL文件?
python有沒有辦法能夠編譯成DLL文件?通用情況下,沒有什么好辦法能把python編譯成dll,因為python是解釋型語言,dll是編譯后的二進制文件,2者不在一個次元。除非你把python的解
python有沒有辦法能夠編譯成DLL文件?
通用情況下,沒有什么好辦法能把python編譯成dll,因為python是解釋型語言,dll是編譯后的二進制文件,2者不在一個次元。除非你把python的解釋器也打包進你的工程,并在你的exe里調(diào)用。但某些特殊情況下,也有把python的代碼編譯成dll文件的方法,在.net環(huán)境下,可以用IronPython這個工具,它可以把python代碼編譯成dll。
我現(xiàn)在想把自己寫的python模塊源代碼封裝成dll,然后在別的python腳本里調(diào)用,可以嗎?
只是加密的話,將.py源碼轉(zhuǎn)換成.pyc的字節(jié)碼文件就可以。最簡單的用例是,假設自己寫了個my_lib.py文件,在main.py中import,運行:# File: main.pyimport my_lib...然后會發(fā)現(xiàn)當前目錄下生成了my_lib.pyc文件。把my_lib.py文件移到別處,只保留my_lib.pyc的情況下,main.py也可以正常運行。my_lib.pyc就是題主需要的“加密”版本。在明白了原理以后,也可以用命令直接生成.pyc文件:python -m compileall my_lib.py就可以得到my_lib.pyc了。
既然Python是用C實現(xiàn)的,那為什么Python不能直接生成exe呢?
C語言其實是一種比較“古老”而且“底層”的語言。其執(zhí)行效率,僅次于匯編語言。
說其古老,是因為C語言的出現(xiàn)很早。
雖然Fortran、Cobol語言出現(xiàn)比C語言更早,但是現(xiàn)代主流操作系統(tǒng)(Windows、Mac Os、linux、iOS、Android、Unix)全部脫胎于C語言。
說它底層,是因為C語言設計之初就是為了同時編寫匯編語言。理論上可以全部用匯編寫。而匯編語言是執(zhí)行效率最高的語言。
所以Python用C語言寫一點也不奇怪。這和它能不能生成Exe一點關系都沒有。
Exe文件是Windows平臺的私有格式。最簡單的Exe是Com可執(zhí)行文件。Exe文件實際上是一個引導程序 一個解釋程序組成的。
Python語言生成的代碼,只需要配以引導程序和解釋程序,就可以作為Exe文件執(zhí)行。
所以,Python生成Exe文件一點難度都沒有。只是它愿不愿意提供的問題。
python有沒有辦法能夠編譯成DLL文件?
1. 有 2. 不可以打包出問題幾乎必定不是因為py源碼的模塊沒打進去,而是因為其C擴展或者綁定的dll沒打進去。而目前就沒有哪個玩意既能和CPython一樣提供相同的C擴展接口,同時還能自動處理好這些個dll依賴。換句話說,你用pyinstaller能打包的東西,用其他玩意也能很好打包/編譯;反之也不太行,并且很多情況下是不可行。因此正確的姿勢是,好好看看各種打包工具的文檔,當打包有依賴時,把這些個依賴好好寫進打包的配置文件。當然,更省事的辦法是帶著site以及解釋器的dll,然后用C/C 寫個殼。類似于sublime那樣的做法。
如何用Python開發(fā)微軟的動態(tài)鏈接庫dll?
DLL一般還是用C或C 語言開發(fā)較多。你如果只會python,這可能就不太好弄了。
你只需要學會簡單的生成DLL就行,然后在DLL里加載PYTHON腳本,實現(xiàn)你想要的功能,然后把這個DLL給其他人用即可。
但是顯然,你這個DLL要依賴python的DLL(比如python27.dl),同時還要依賴python的運行庫(import時用的)。
但是即使是弄好這些,你把這個給別人去用,這還是體積有點大。因為一共差不多要20多M大小。
如果你只是實現(xiàn)了一個小功能,這個給別人用還是不太合適。
解釋型語言都有這種問題。
就比如JAVA語言開發(fā)個小功能,想把這個封裝成DLL,然后給別人用,可以用JNI。這也需要把JRE目錄拷出去。當然你在別人電腦安裝JRE也行,但太麻煩了,因為一般的用戶不是服務器,不一定裝JRE。
所以綜合來看,你如果想開發(fā)這個DLL,還是先用C或者C 寫個DLL,然后里面動態(tài)執(zhí)行python腳本,再附帶下python運行庫,給別人用就行了。
如果涉及的語言多,應該可以考慮用COM組件技術開發(fā)。
如何將python程序打包為exe?
具體用法為,假設有一個helloworld.py的python腳本,把其轉(zhuǎn)換為獨立運行的exe程序,并運行在沒有安裝python的windows系統(tǒng)上。那么首先要做的是寫一個用于發(fā)布程序的設置腳本例如mysetup.py,在其中的setup函數(shù)前插入語句import py2exe
示例腳本:#mysetup.py
from distutils.core import setup
import py2exe
setup(console=["helloworld.py"])
然后在命令行中執(zhí)行如下語句:
python mysetup.py py2exe
以上命令執(zhí)行完成后,會產(chǎn)生一個名為dist的子目錄,其中包含了helloworld.exe,python24.dll,library.zip這些文件。具體發(fā)布時要將這個目錄中的文件一起打包發(fā)布,在沒有安裝Python的Windows系統(tǒng)中直接運行helloworld.exe即可
以上的mysetup.py腳本創(chuàng)建了一個控制臺的helloword.exe程序,如果需要創(chuàng)建圖形用戶界面的程序,只需要將mysetup.py中的console=["helloworld.py"]替換為windows=["myscript.py"]既可;另外需要注意的是,py2exe一次能夠創(chuàng)建多個exe文件,僅需要將這些腳本文件的列表傳遞給console或windows的關鍵字參數(shù)