2017-01-21 35 views
2

我的應用程序使用了AppEngine標準環境提供的python庫。 爲了將圖書館納入我的本地開發中,我遵循https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27的說明。Google AppEngine:僅在本地開發中使用python庫。識別環境

# appengine_config.py 
from google.appengine.ext import vendor 

# Add any libraries install in the "lib" folder. 
vendor.add('lib') 

我PIP安裝庫文件夾 'LIB' 和在appengine_config.py加入vendor.add( 'LIB') 我想 「vendor.add( 'LIB')」 是有效的/僅在應用程序位於本地而不在Google雲中時運行。

什麼是識別環境的正確方法? 如何在appengine_config.py下面?

if 'localhost' in os.environ['SERVER_NAME']: 
    vendor.add('lib') 
+1

出於好奇,你在本地使用什麼庫和_not_在生產? – mgilson

+0

'django'在這種情況下。 – user362953

回答

1

按照official documentation,你應該照照SERVER_SOFTWARE環境變量:

要了解在生產或在本地開發服務器代碼是否正在運行,檢查是否os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/')。當這是True時,您正在生產;否則,你正在本地開發服務器上運行。

+0

謝謝mgilson。 – user362953

1

由@mgilson給我傾向於使用

DEBUG = os.environ.get('SERVER_SOFTWARE','').startswith('Dev') 

如果DEBUG爲真,那麼你在本地環境中運行的答案類似,否則它是活的。

+1

謝謝參孫。 – user362953

2

如果你的應用程序使用GAE提供的庫,那麼你沒有正確包括它(你正在使用它進行銷售,這是你使用GAE提供的庫而不是所做的)。從Requesting a library

您可以通過使用libraries: directive in app.yaml來請求圖書館。

libraries: 
- name: PIL 
    version: "1.1.7" 
- name: webob 
    version: "1.1.1" 

需要注意的是:庫必須是一個支持的runtime-provided third-party libraries.

在部署時,應用程序引擎將提供所請求的庫添加到 運行時環境。一些圖書館必須是installed locally

+0

謝謝丹。 當使用「庫」指令時,在本地運行時,庫是否會被安裝? 或者是預計要安裝的庫?在標準路徑? 在這種情況下,庫是django。 我正在使用「庫」指令。 django安裝在我的機器上。 但是,該應用程序無法運行django導入錯誤。 我試着查看dev_appserver.py,update_manager.py來查找在本地運行時安裝軟件包的代碼。 我看到安裝檢查是爲'app-engine-python''component'完成的。 但是,找不到「庫」指令的任何內容。 – user362953

+0

一些庫需要特別注意,請參閱報價中的鏈接。 Django是其中之一https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27#django –

+0

我現在只能回到這一點。 答:鏈接似乎只涉及下面的庫和django不在列表中。你同意嗎? LXML matplotlib MySQLdb的 numpy的 PIL crcmod pycrypto B.假設Django是在列表中,是安裝Django第三方lib和它的供應商的建議? – user362953

相關問題