看板 Python 關於我們 聯絡資訊
c調用python, 通常用PyImport_ImportModule來引入欲調用的py檔案 可是發現產生的exe檔並不會包入這個py檔案, 必須把py檔案和c放一起才能執行 1. 請問有辦法把py檔案也包入exe嗎? 2. 或是 有甚麼其他的方法 把py檔引入 來產生包入py檔的exe呢? 3. 這麼做安全嗎? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.175.179 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1423846418.A.914.html
LiloHuang: 假設使用 VC 編譯器,編譯器並不知道 .py 不會一起編譯 02/14 13:21
LiloHuang: 以寫程式的角度來看,第一步得先把 .py 檔編譯成 .pyc 02/14 13:22
LiloHuang: 透過 VC 的資源檔把 .pyc 的檔案一起編譯到 .exe 檔案 02/14 13:22
LiloHuang: 第二步,使用 FindResource LoadResource LockResource 02/14 13:22
LiloHuang: 取出 .pyc 的指標,以及 SizeofResource 取出資源大小 02/14 13:22
LiloHuang: 再用 co = PyMarshal_ReadObjectFromString(p+8, s-8) 02/14 13:22
LiloHuang: PyImport_ExecCodeModule("<自定義>", co) 來取代 02/14 13:23
LiloHuang: 原先你使用的 PyImport_ImportModule("<自定義>") 02/14 13:23
LiloHuang: 但是以上的方式相當的繁瑣,簡單一點就是用 Bundler 02/14 13:23
LiloHuang: 花錢買好一點的 Bundler,可以不用寫程式把檔案做打包 02/14 13:23
LiloHuang: 如果 .py 檔案有一個以上,自己實作打包會更加的複雜 02/14 13:26
LiloHuang: 以上,提供參考。 02/14 13:27
※ 編輯: opengood5566 (1.169.175.179), 02/14/2015 18:39:48
LiloHuang: 如果是把 .py 編譯成 .pyc 會有一定程度的保護... 02/14 18:48
LiloHuang: 但是不能完全防止逆向工程就是... 02/14 18:49
opengood5566: 感謝^^ 02/14 19:11
LiloHuang: 請看最新的回文,裡面有比較完整的範例... 02/14 19:25