Re: [問題] c調用py產生的exe有辦法包入py檔嗎?

看板Python作者 (十年一刻)時間9年前 (2015/02/14 19:25), 9年前編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/3 (看更多)
步驟一:建立一個 Console-based 的 VC 專案 主程式內容大概如下,不保證完全符合需求或者可以運作 請依照自己的需求進行修改... #include <Windows.h> #include <Python.h> #include <marshal.h> #include "resource.h" int main() { HRSRC res = FindResource(NULL, MAKEINTRESOURCE(IDR_PYTHON1), TEXT("PYTHON")); if (!res) return -1; HGLOBAL handle = LoadResource(NULL, res); if (!handle) return -1; char *ptr = (char *)LockResource(handle); size_t size = SizeofResource(NULL, res); if (!ptr || size < 8) return -1; Py_Initialize(); PyObject *code_object = NULL; PyObject *module = NULL; do { code_object = PyMarshal_ReadObjectFromString(ptr + 8, size - 8); if (!code_object) break; module = PyImport_ExecCodeModule("test.pyc", code_object); if (!module) break; if (PyObject_HasAttrString(module, "foobar")) { printf("great!\n"); } } while (0); Py_XDECREF(module); Py_XDECREF(code_object); Py_Finalize(); return 0; } 步驟二:產生 .pyc 檔案 編譯 .py 成 .pyc 的方式是 python -m py_compile test.py 步驟三:加入 .pyc 資源檔 透過 VC 資源檔建立新的自訂資源項目,假設命名為 PYTHON 加入資源的方式有點類似此教學,http://goo.gl/yHFN0R 但是請務必透過 [自訂] 按鈕,而不是選擇已知的資源類型 再把稍早編譯好的 test.pyc 擺到 Resource.rc 同一層目錄後 用記事本打開 Resource.rc 檔案,把新增的自訂資源項目改成 IDR_PYTHON1 PYTHON "test.pyc" 完成以上動作就可以了,有問題請推文我會盡量回應。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.36.61 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1423913118.A.24B.html ※ 編輯: LiloHuang (61.219.36.46), 02/14/2015 23:37:48

02/16 09:57, , 1F
推分享,最近工作剛好碰到類似的問題,這招很有幫助
02/16 09:57, 1F

10/20 22:51, , 2F
感謝^^
10/20 22:51, 2F
文章代碼(AID): #1Ktp2U9B (Python)
文章代碼(AID): #1Ktp2U9B (Python)