卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

c調(diào)用python python有沒有辦法能夠編譯成DLL文件?

python有沒有辦法能夠編譯成DLL文件?通用情況下,沒有什么好辦法能把python編譯成dll,因?yàn)閜ython是解釋型語言,dll是編譯后的二進(jìn)制文件,2者不在一個(gè)次元。除非你把python的解

python有沒有辦法能夠編譯成DLL文件?

通用情況下,沒有什么好辦法能把python編譯成dll,因?yàn)閜ython是解釋型語言,dll是編譯后的二進(jìn)制文件,2者不在一個(gè)次元。除非你把python的解釋器也打包進(jìn)你的工程,并在你的exe里調(diào)用。但某些特殊情況下,也有把python的代碼編譯成dll文件的方法,在.net環(huán)境下,可以用IronPython這個(gè)工具,它可以把python代碼編譯成dll。

我現(xiàn)在想把自己寫的python模塊源代碼封裝成dll,然后在別的python腳本里調(diào)用,可以嗎?

只是加密的話,將.py源碼轉(zhuǎn)換成.pyc的字節(jié)碼文件就可以。最簡(jiǎn)單的用例是,假設(shè)自己寫了個(gè)my_lib.py文件,在main.py中import,運(yùn)行:# File: main.pyimport my_lib...然后會(huì)發(fā)現(xiàn)當(dāng)前目錄下生成了my_lib.pyc文件。把my_lib.py文件移到別處,只保留my_lib.pyc的情況下,main.py也可以正常運(yùn)行。my_lib.pyc就是題主需要的“加密”版本。在明白了原理以后,也可以用命令直接生成.pyc文件:python -m compileall my_lib.py就可以得到my_lib.pyc了。

既然Python是用C實(shí)現(xiàn)的,那為什么Python不能直接生成exe呢?

C語言其實(shí)是一種比較“古老”而且“底層”的語言。其執(zhí)行效率,僅次于匯編語言。

說其古老,是因?yàn)镃語言的出現(xiàn)很早。

雖然Fortran、Cobol語言出現(xiàn)比C語言更早,但是現(xiàn)代主流操作系統(tǒng)(Windows、Mac Os、linux、iOS、Android、Unix)全部脫胎于C語言。

說它底層,是因?yàn)镃語言設(shè)計(jì)之初就是為了同時(shí)編寫匯編語言。理論上可以全部用匯編寫。而匯編語言是執(zhí)行效率最高的語言。

所以Python用C語言寫一點(diǎn)也不奇怪。這和它能不能生成Exe一點(diǎn)關(guān)系都沒有。

Exe文件是Windows平臺(tái)的私有格式。最簡(jiǎn)單的Exe是Com可執(zhí)行文件。Exe文件實(shí)際上是一個(gè)引導(dǎo)程序 一個(gè)解釋程序組成的。

Python語言生成的代碼,只需要配以引導(dǎo)程序和解釋程序,就可以作為Exe文件執(zhí)行。

所以,Python生成Exe文件一點(diǎn)難度都沒有。只是它愿不愿意提供的問題。

python有沒有辦法能夠編譯成DLL文件?

1. 有 2. 不可以打包出問題幾乎必定不是因?yàn)閜y源碼的模塊沒打進(jìn)去,而是因?yàn)槠銫擴(kuò)展或者綁定的dll沒打進(jìn)去。而目前就沒有哪個(gè)玩意既能和CPython一樣提供相同的C擴(kuò)展接口,同時(shí)還能自動(dòng)處理好這些個(gè)dll依賴。換句話說,你用pyinstaller能打包的東西,用其他玩意也能很好打包/編譯;反之也不太行,并且很多情況下是不可行。因此正確的姿勢(shì)是,好好看看各種打包工具的文檔,當(dāng)打包有依賴時(shí),把這些個(gè)依賴好好寫進(jìn)打包的配置文件。當(dāng)然,更省事的辦法是帶著site以及解釋器的dll,然后用C/C 寫個(gè)殼。類似于sublime那樣的做法。

如何用Python開發(fā)微軟的動(dòng)態(tài)鏈接庫dll?

DLL一般還是用C或C 語言開發(fā)較多。你如果只會(huì)python,這可能就不太好弄了。

你只需要學(xué)會(huì)簡(jiǎn)單的生成DLL就行,然后在DLL里加載PYTHON腳本,實(shí)現(xiàn)你想要的功能,然后把這個(gè)DLL給其他人用即可。

但是顯然,你這個(gè)DLL要依賴python的DLL(比如python27.dl),同時(shí)還要依賴python的運(yùn)行庫(import時(shí)用的)。

但是即使是弄好這些,你把這個(gè)給別人去用,這還是體積有點(diǎn)大。因?yàn)橐还膊畈欢嘁?0多M大小。

如果你只是實(shí)現(xiàn)了一個(gè)小功能,這個(gè)給別人用還是不太合適。

解釋型語言都有這種問題。

就比如JAVA語言開發(fā)個(gè)小功能,想把這個(gè)封裝成DLL,然后給別人用,可以用JNI。這也需要把JRE目錄拷出去。當(dāng)然你在別人電腦安裝JRE也行,但太麻煩了,因?yàn)橐话愕挠脩舨皇欠?wù)器,不一定裝JRE。

所以綜合來看,你如果想開發(fā)這個(gè)DLL,還是先用C或者C 寫個(gè)DLL,然后里面動(dòng)態(tài)執(zhí)行python腳本,再附帶下python運(yùn)行庫,給別人用就行了。

如果涉及的語言多,應(yīng)該可以考慮用COM組件技術(shù)開發(fā)。

如何將python程序打包為exe?

  1. 具體用法為,假設(shè)有一個(gè)helloworld.py的python腳本,把其轉(zhuǎn)換為獨(dú)立運(yùn)行的exe程序,并運(yùn)行在沒有安裝python的windows系統(tǒng)上。那么首先要做的是寫一個(gè)用于發(fā)布程序的設(shè)置腳本例如mysetup.py,在其中的setup函數(shù)前插入語句import py2exe

  2. 示例腳本:#mysetup.py

    from distutils.core import setup

    import py2exe

    setup(console=["helloworld.py"])

    然后在命令行中執(zhí)行如下語句:

    python mysetup.py py2exe

  3. 以上命令執(zhí)行完成后,會(huì)產(chǎn)生一個(gè)名為dist的子目錄,其中包含了helloworld.exe,python24.dll,library.zip這些文件。具體發(fā)布時(shí)要將這個(gè)目錄中的文件一起打包發(fā)布,在沒有安裝Python的Windows系統(tǒng)中直接運(yùn)行helloworld.exe即可

  4. 以上的mysetup.py腳本創(chuàng)建了一個(gè)控制臺(tái)的helloword.exe程序,如果需要?jiǎng)?chuàng)建圖形用戶界面的程序,只需要將mysetup.py中的console=["helloworld.py"]替換為windows=["myscript.py"]既可;另外需要注意的是,py2exe一次能夠創(chuàng)建多個(gè)exe文件,僅需要將這些腳本文件的列表傳遞給console或windows的關(guān)鍵字參數(shù)