Google App Engine - 大查询 - Python 找不到库 google.cloud
Posted
技术标签:
【中文标题】Google App Engine - 大查询 - Python 找不到库 google.cloud【英文标题】:Google App Engine - Big Query - Python can't find libraries google.cloud 【发布时间】:2017-07-19 01:17:31 【问题描述】:我正在使用 Eclipse 和 PyDev 在 Ubuntu Linux 16.4 上使用 Python 构建一个 App Engine 项目。
我正在使用运行良好的 Flask 框架,我想做的是连接到 Big Query,这就是我遇到问题的地方。
所以我用过:
pip install --upgrade google-cloud-bigquery
要安装大查询库,我可以看到/usr/local/lib/python2.7/dist-packages
中的包
由于某种原因 Eclipse 似乎不认为该库已注册,我可以忍受,但是当我运行我的项目 dev_appserver.py 时,App Engine 找不到该库:
我的 Python PyDev 中有这个:
这很奇怪,好像我添加了from lib.google.cloud import bigquery
PyDev 解析,dist-packages 在 PyDev 路径中,所以我不明白为什么它不捡起来。
您还会注意到我已经注释掉了 apiclient.discovery
和 oauth2client.client
,我打算尝试另一种方式,但 App Engine 抱怨它找不到 SignedJwtAssertionCredentials
库,所以我确定这就是全部链接并由相同的问题引起。
在我的appengine_config.py
我有:
【问题讨论】:
因为sdk和google-cloud包都包含google文件夹。 @MattStannard 你找到解决问题的方法了吗?我也面临同样的情况。 【参考方案1】:如果您想使用未包含在this 列表中的第三方库,则必须手动添加它们。
为了手动包含任何其他库,您必须将它们放在 app.yaml 所在的目录中。因此,例如,如果您具有以下结构:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
然后在你的 hello.py 中你必须把这两行放在文件的开头:
import sys
sys.path.insert(0, 'libs')
完成此操作后,您将能够使用要放入该 libs 目录中的任何第 3 方库。例如:
from bs4 import BeautifulSoup
【讨论】:
感谢您的回复。 @dan - 事实上,如果您查看我的 appengine_config.py 屏幕截图,我已经尝试过了,您会发现它符合您的建议。勇敢 - 我已经厌倦了它实际上不起作用【参考方案2】:虽然@Bravin 走在正确的道路上,但vendoring in 3rd party libraries 的推荐 程序有点不同:
创建一个目录来存储您的第三方库,例如
lib/
。mkdir lib
使用带有
-t <directory>
标志的pip(版本6 或更高版本)将库复制到您在上一步中创建的文件夹中。 例如:pip install -t lib/ <library_name>
Using Homebrew Python on Mac OS X?
在与您的
app.yaml
文件相同的文件夹中创建一个名为appengine_config.py
的文件。编辑
appengine_config.py
文件并将您的库目录提供给vendor.add()
方法。# appengine_config.py from google.appengine.ext import vendor # Add any libraries install in the "lib" folder. vendor.add('lib')
【讨论】:
感谢您的回复。【参考方案3】:(2021 年 6 月):OP 和各种响应中似乎有些混乱,所以让我们为 Python 2 用户说清楚:
-
将
google-cloud-bigquery
添加到requirements.txt
创建appengine_config.py
以匹配Step 4 on this page(您似乎拥有)
从main.py
中删除带有apiclient
或googleapiclient
和oauth2client
的行(错误的客户端库)
运行pip2 install -t lib -r requirements.txt
(如果您没有安装Python 3,则只运行pip
)
注意:Python 3 用户不必玩这些游戏...上面的第 1 步就是您需要做的全部...没有appengine_config.py
文件,没有运行pip install
,也没有@ 987654334@文件夹。
对于更广泛的受众,请参阅my answer to this more general question。
【讨论】:
以上是关于Google App Engine - 大查询 - Python 找不到库 google.cloud的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google App Engine Python 上的 Django nonrel 中使用查询游标?
python 有效地翻页查询以从Google App Engine数据存储中获取所有实体。