2009-02-15 100 views
16

我在使用Python作爲嵌入式腳本語言C++編寫的愛好項目中考慮。我不想依賴於單獨安裝的Python發行版。 Python文檔似乎對一般用法很清楚,但我找不到明確的答案。使用Python或其他嵌入式腳本語言部署應用程序

在我的應用程序中部署Python解釋器+標準庫是否可行?像Lua,Javascript(Spidermonkey),Ruby等其他語言會更好用於此用途嗎?

下面是我在權衡不同的語言對標準:

  • 無/少依賴於外部安裝的軟件包
  • 具有很好的功能標準庫設置
  • 尼斯語言:)
  • 隱而不宣導致一個巨大的安裝包

編輯:

我想這個問題應該是: 如何部署自己的Python庫+標準庫,我的程序的安裝程序,因此該平臺是否已經安裝或沒有蟒蛇不要緊?

edit2:

再一次澄清。我不需要關於鏈接C和Python代碼的細節信息。

回答

16

將您的應用程序鏈接到python庫(Windows上的pythonXX.lib),並將以下內容添加到main()函數中。

Py_NoSiteFlag = 1; // Disable importing site.py 
Py_Initialize(); // Create a python interpreter 

把你需要到一個zip文件(稱爲pythonXX.zip)Python標準庫位,並把這個和你pythonXX.dll分發可執行旁邊。查看zipfile模塊中的PyZipFile。

8

嵌入過程已完整記錄:Embedding Python in Another Application。 這些文件暗示了嵌入完成的幾個級別,選擇最適合您的要求的級別。

嵌入Python的簡單演示可以在源代碼發佈的Demo/embed /目錄中找到。

The demo is here,應該可以從發行版本構建。

  • 非常高級別嵌入
  • 除了非常高級別嵌入:概述
  • 純嵌入
  • 伸出嵌入式Python
  • Python嵌入在C++

從標準庫你可以選擇comp螞蟻不具有太多依賴性。

+0

添加鏈接到演示源。 – gimel 2009-02-15 17:37:42

+0

我認爲這個問題還不清楚。我編輯了一下。也許現在更準確。 – 2009-02-15 17:41:08

0

如果你正在尋找一種方式來簡單地部署一個Python應用程序,你可以使用Py2Exe。這將允許您的應用程序獲得所需的所有依賴關係,而無需擔心用戶計算機上已安裝或未安裝的內容。

[編輯]如果Py2Exe是一個不走的嵌入式應用,你能簡單地得到您的安裝程序來檢查培訓相關文件和下載/安裝任何缺少的?[/編輯]

[EDIT2]莫非Elmer是你在找什麼? [/ Edit2]

+0

這是否適用於嵌入Python的C++應用程序? – 2009-02-15 17:47:02

+0

我不確定(我從來沒有嘗試過)。 Py2exe只是將一個python應用程序,包括它需要的任何依賴關係轉化爲一個可執行文件。 – 2009-02-15 17:51:03

5

要擴展由gimel的答案,沒有什麼可以阻止你運送python.dll,使用它,並設置正確的PYTHONPATH以便使用你自己的python標準庫安裝。它們只是庫和文件,你的安裝過程就可以像這樣處理它們。

相關問題