我知道你可以在SDK的首选项中设置它,但我担心部署应用程序时它不会正确。 Google Cloud上的PYTHON_PATH值是多少?我可以设置吗?如何为我的Google App Engine应用程序设置PYTHON_PATH变量?
倒退一步,我只是希望能够做到:
from something import something_else
我的应用程序无法解析此引用,这是什么导致我试图让PYTHON_PATH。
我知道你可以在SDK的首选项中设置它,但我担心部署应用程序时它不会正确。 Google Cloud上的PYTHON_PATH值是多少?我可以设置吗?如何为我的Google App Engine应用程序设置PYTHON_PATH变量?
倒退一步,我只是希望能够做到:
from something import something_else
我的应用程序无法解析此引用,这是什么导致我试图让PYTHON_PATH。
一旦你的代码被部署,它将有权访问所有支持的库,而无需采取任何行动。为了将特定于应用程序的目录添加到路径中,您需要在处理程序中以编程方式执行它。我用一个模式是这样的:
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()函数内部的路径设置代码取出。
你通常把这段代码放在哪里?你把它放在每个处理程序中,还是你制作一个基本处理程序并从中继承你的处理程序? – Deane 2011-03-31 13:53:38
@Deane:在帖子中回答了你的问题。 – 2011-03-31 14:11:42
你得到了什么错误? “something_else”是'something'包中的模块,还是'something'模块中的符号? – 2011-03-31 13:41:09
@Brandon:我希望我能正确回答,但这是我的第一个Python项目。我有一个名为“something.py”的文件,其中我定义了一个名为“something_else”的类。我试图让我的处理程序可以使用该类。 – Deane 2011-03-31 15:37:27
'something.py'在哪里?使这项工作最简单的解决方案是将其放入应用程序的根目录中。 – 2011-03-31 23:04:32