2012-01-19 56 views
3

我想在我的App Engine應用程序中構建一個管理部分,這將允許我動態下載和安裝Python模塊。在Google App Engine上使用SetupTools動態下載和安裝python模塊

任何想法,以最有效的方式來完成這一點,沒有能力寫入文件系統?

是否有任何這樣做的例子?

請問python27 support of setuptools會讓這更容易嗎?

編輯:

我最初的想法是,這可以通過動態地下載一個雞蛋或zip文件來完成。將它保存到blobstore,並從那裏加載。

這是可行嗎?

這會創建什麼樣的性能問題?

+0

...你爲什麼要這樣做? –

+0

@NickJohnson易於使用,主要。我正在構建一個電子商務應用程序,我希望開發人員能夠通過管理部分加載插件並下載修補程序,而不需要重新部署。有關如何完成這一任務的任何暗示? imp模塊? –

+0

我強烈建議不要這樣做。讓他們重新部署(或者如果您正在進行SAAS,則自己重新部署),或者建立全套擴展並讓它們根據需要啓用它們。 –

回答

2

在GAE上,您無法訪問文件系統,這就是爲什麼您無法在您的實例上安裝任何第三方軟件包,您只能使用自己的代碼分發它們。

+0

我意識到這一點。我在想,也許這個限制可以通過加載模塊作爲壓縮文件或blobstore中的蛋來規避。 –

+0

沒有。壓縮模塊必須作爲資源提供給應用程序。上傳資源的唯一方法是通過'appcfg'(或者前端的東西)。 –

+0

實際上,你當然可以編寫一個自定義導入鉤子,從任意源中導入Python模塊。但我無法弄清楚你爲什麼想要。 –

1

在您的應用程序目錄中創建一個名爲'lib'的文件夾。對於你想添加的任何模塊,只需解壓縮並將其添加到lib。然後使用控制檯或Google App Launcher重新部署您的應用程序。每當你想添加一個新模塊時重複。

我不是100%確定這一點。但在我看來,如果不想要一個手動過程,那麼我會建議動態添加模塊內容作爲blob存儲條目並在運行時加載模塊。

但是,前面的答案指出,要使用包,其代碼需要存在於您的應用程序中。

+0

從blob商店加載是我想要做的。你有沒有想過如何在運行時加載模塊?謝謝 –

相關問題