【问题标题】:Using gspread in GAE在 GAE 中使用 gspread
【发布时间】:2016-01-21 09:56:47
【问题描述】:

我无法获得 Python 包 gspread,以便在 GAE 中工作。

我的项目在D:\Documents\Google Cloud\myapp。我安装了gspread 使用:

c:\python27\python.exe setup.py install --home="D:\Documents\Google Cloud\myapp"

所有文件似乎都安装在D:\Documents\Google Cloud\myapp\lib\python 中,而我没有选择。实际上,我必须将此路径添加到PYTHONPATH 才能使 setup.py 正常运行。

如果我随后运行 Python,我可以在解释器中 import gspread

但是,在我的应用程序中,我无法导入 (ImportError: No module named gspread),即使我将那条长路径添加到 sys.path。我的sys.path 在运行时包含以下值:

'D:\\Documents\\Google Cloud\\myapp\\lib\\python'
'D:\\Documents\\Google Cloud\\myapp'
'D:\\Documents\\Google Cloud\\myapp\\lib'

需要什么才能让这个第三方模块工作?

【问题讨论】:

  • 是的,我确实看到了,但找不到任何适用的东西。我的模块不是源代码形式,而是通过 setup.py 添加的。我没有时间详细介绍 setup.py 的工作原理。
  • 都适用。我知道 setup.py 是如何工作的。重新阅读答案,它就在那里import sys sys.path.insert(0, 'libs')。请注意答案中的 hello/libs 与您的结构之间的相似性。您需要意识到开发服务器正在模拟生产沙箱,并且不会使用完全合格的路径。
  • 我不会做的事情是将路径包含在应用程序的顶部。使用 app_config.py 设置全局路径之类的东西,因为它会在您的任何代码之前加载。
  • 对不起,忘了说上面还在我的本地机器上运行,还没有部署到谷歌。我做了sys.path.insert,除了sys.path中我手动添加的第一个路径,其他的都包含在GAE Launcher中。在...lib\path 文件夹中,有一个gspread-0.2.5-py2.7.egg 文件等。 ...lib\python 是必须在 sys.path 中才能找到 gspread 的正确值吗?

标签: python google-app-engine google-cloud-platform setup.py gspread


【解决方案1】:

我通过将以下文件的路径而不是文件夹的路径添加到sys.path

D:\Documents\Google Cloud\Drive-1185\lib\python\gspread-0.2.5-py2.7.egg

可以使用相对路径,因为工作目录是应用程序目录。要部署到 Google 的服务器,显然只能使用相对路径,不仅如此,还必须将反斜杠替换为正斜杠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多