[問題] C呼叫 python 的 function 在包裝成一個單一執行檔

看板Python作者 (要求太仔細會是太過份嗎)時間14年前 (2011/08/09 22:59), 編輯推噓1(1014)
留言15則, 6人參與, 最新討論串1/1
爬文爬了很久,絕大多數都是要在另一台上面安裝 python 有辦法編出單一執行檔嗎? 我是用 mingw32 和 python2.5 去編譯的 編出來的exe放到沒裝python的電腦就是會跳出 "遺失 python25.dll" 我本來想說 libpytho25.a 直接static link 應該就可以編出純執行檔. 不過今天試了整天的結論好像不行. 另一個問題是linux上的 我下 gcc my.c -lpython2.5, 編出來的 a.out 丟到沒裝python的linux主機, 結果執行時缺少share library. 可是當我下 gcc my.c -static -lpython2.5時 全都是undef reference. 如果是這樣的話,那 libpython2.5.a 的用途是做什麼的? 用來產生 libpython2.5.so ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.44.40

08/09 23:11, , 1F
因為 libpython2.5.a 也是動態連結的, 你只包那個 lib 沒
08/09 23:11, 1F

08/09 23:11, , 2F
用, 它裡面參照的 symbols 也要改才行
08/09 23:11, 2F

08/09 23:12, , 3F
你需要 compile 一份靜態連結的 Python; 我沒研究過, 不
08/09 23:12, 3F

08/09 23:12, , 4F
過這個或許也行? http://goo.gl/4L2gx
08/09 23:12, 4F

08/09 23:27, , 5F
謝謝樓上大大的指教,我還有知道一個叫static python
08/09 23:27, 5F

08/09 23:28, , 6F
不過那個只能在linux上跑(binary code);看來得硬幹了
08/09 23:28, 6F

08/09 23:34, , 7F
08/09 23:34, 7F

08/09 23:35, , 8F
我曾在公司用這玩意做工具給產線用
08/09 23:35, 8F

08/09 23:37, , 9F
啊…我看反了,上面這只能 py call c,真是抱歉 orz
08/09 23:37, 9F

08/09 23:39, , 10F
要 call py 的話…試試 Boost.Python?
08/09 23:39, 10F

08/09 23:51, , 11F
boost是c++的..T__T 我相當不熟...orz
08/09 23:51, 11F

08/10 13:04, , 12F
PyInstaller?
08/10 13:04, 12F

08/10 13:16, , 13F
hi F大, installer應該是把py編成exe,跟我的需求有落差
08/10 13:16, 13F

08/10 21:02, , 14F
最簡單的解法就是自己編一個 Python runtime 來用
08/10 21:02, 14F

08/10 21:57, , 15F
一定不能把 python25.dll 也放在同個目錄下嗎?
08/10 21:57, 15F
文章代碼(AID): #1EGKj4YK (Python)
文章代碼(AID): #1EGKj4YK (Python)