2011-03-31 37 views
0

我知道你可以在SDK的首选项中设置它,但我担心部署应用程序时它不会正确。 Google Cloud上的PYTHON_PATH值是多少?我可以设置吗?如何为我的Google App Engine应用程序设置PYTHON_PATH变量?

倒退一步,我只是希望能够做到:

from something import something_else 

我的应用程序无法解析此引用,这是什么导致我试图让PYTHON_PATH。

+0

你得到了什么错误? “something_else”是'something'包中的模块,还是'something'模块中的符号? – 2011-03-31 13:41:09

+0

@Brandon:我希望我能正确回答,但这是我的第一个Python项目。我有一个名为“something.py”的文件,其中我定义了一个名为“something_else”的类。我试图让我的处理程序可以使用该类。 – Deane 2011-03-31 15:37:27

+0

'something.py'在哪里?使这项工作最简单的解决方案是将其放入应用程序的根目录中。 – 2011-03-31 23:04:32

回答

1

一旦你的代码被部署,它将有权访问所有支持的库,而无需采取任何行动。为了将特定于应用程序的目录添加到路径中,您需要在处理程序中以编程方式执行它。我用一个模式是这样的:

paths = [ 
    os.path.join(os.path.dirname(__file__), 'mylib'), 
    os.path.join(os.path.dirname(__file__), 'app', 'tags'), 
    os.path.join(os.path.dirname(__file__), 'app', 'controllers'), 
    os.path.join(os.path.dirname(__file__), 'app', 'common'), 
    os.path.join(os.path.dirname(__file__), 'app', 'models'), 
    os.path.join(os.path.dirname(__file__), 'app') 
] 
for path in paths: 
    if os.path.exists(path): 
     # Don't add paths that don't exist. 
     sys.path.append(path) 

如果你发现你有导入模块,是不是你的应用程序的一部分出了问题,可能是模块不支持AppEngine上。有关更多信息,请参阅the docs

编辑: 每个人都有自己的AppEngine应用程序有点不同,但一般来说,您需要在每个.py文件的主入口点都有这样的代码,该文件在app.yaml中被列为处理程序。通常,处理程序文件的外观如下所示:

def main(): 
    # Do all of my initialization and run my 
    # WSGIApplication 

if __name__ == "__main__": 
    main() 

您可以将main()函数内部的路径设置代码取出。

+0

你通常把这段代码放在哪里?你把它放在每个处理程序中,还是你制作一个基本处理程序并从中继承你的处理程序? – Deane 2011-03-31 13:53:38

+0

@Deane:在帖子中回答了你的问题。 – 2011-03-31 14:11:42

相关问题