我正在使用Eclipse和PyDev在Ubuntu Linux 16.4上使用Python构建App Engine项目。
我使用Flask框架工作正常,我想要做的是连接到Big Query以及我遇到麻烦的地方。
所以我用过:
pip install --upgrade google-cloud-bigquery
要安装Big Query Library,我可以在/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抱怨它无法找到{ {1}}库所以我确信这一切都是由相同的问题引起的。
在SignedJwtAssertionCredentials
我有:
答案 0 :(得分:0)
如果您想使用未包含{3}}列表的第三方库,则必须手动添加它们。
为了手动包含任何其他库,您必须将它们放在app.yaml所在的目录中。例如,如果您有以下结构:
hello
├── libs
│ └── bs4
├── hello.py
└── app.yaml
然后在你的hello.py中你必须将这两行放在文件的开头:
import sys
sys.path.insert(0, 'libs')
执行此操作后,您将能够使用您将要放在该libs目录中的任何第三方库。例如:
from bs4 import BeautifulSoup
答案 1 :(得分:0)
虽然@Bravin在正确的道路上,vendoring in 3rd party libraries的推荐程序有点不同:
创建一个目录来存储您的第三方库,例如
package:async/src/byte_collector.dart:1 'package:async/src/byte_collector.dart': error: line 42 pos 16: generic functions not supported T _collectBytes<T>( ^: package:async/src/byte_collector.dart
。lib/
使用pip(版本6或更高版本)和
mkdir lib
标志将库复制到您在上一步中创建的文件夹中。 例如:-t <directory>
在与
pip install -t lib/ <library_name>
文件相同的文件夹中创建名为appengine_config.py
的文件。- 醇>
编辑
app.yaml
文件并将您的库目录提供给appengine_config.py
方法。vendor.add()
答案 2 :(得分:0)
(2021 年 6 月):在 OP 和各种响应中似乎有些混乱,所以让我们让 Python 2 用户非常清楚:
google-cloud-bigquery
添加到 requirements.txt
appengine_config.py
以匹配 Step 4 on this page(您似乎拥有)apiclient
中删除带有 googleapiclient
或 oauth2client
和 main.py
(错误的客户端库)的行pip2 install -t lib -r requirements.txt
(如果您没有安装 Python 3,则只运行 pip
)appengine_config.py
文件,没有运行 {{ 1}},没有 pip install
文件夹。对于更广泛的受众,请参阅my answer to this more general question。