2011-07-09 32 views
2

我有一個使用lxml的模塊。由於這不能在GAE上導入,所以我想在默認情況下使用合適的替代品。一些沿線:如何確定Python模塊是否在GAE上運行?

if not ON_GAE: 
    import lxml 
else: 
    import beautifulsoup 

我怎麼能確定我在GAE?是否有某種操作系統變量?

更新:有某些模塊不會在GAE上運行(如sockets)。而不是有try ... except ImportError多塊,我想從一開始就知道哪些代碼塊需要一個替代實現。

回答

4

您可以使用此:

on_app_engine = os.environ.get('SERVER_SOFTWARE', '').startswith('Google')

然後是這樣的:

if on_app_engine: 
    import lxml 
else: 
    import bla 
+0

這將在開發服務器上失敗,該服務器返回一個以'Development'開頭的字符串。 –

+0

此答案相關:http://stackoverflow.com/questions/1916579/in-python-how-can-i-test-if-im-in-google-app-engine-sdk/1916594#1916594 – basti

2

您可以簡單地嘗試查看導入是否引發異常並僅在必要時才使用其他導入。

try: 
    import lxml 
except ImportError: 
    import beautifulsoup 
+0

這是一個另類。不過,我更喜歡一個解決方案,從一開始我就知道一些進口產品是行不通的。 – basti

+1

'try:','import lxml','catch' ---什麼!? –

+0

@Chris:已更正。 –

相關問題