在python应用程序中导入Google Cloud Bigquery api模块时出错

在python应用程序中导入Google Cloud Bigquery api模块时出错,python,google-app-engine,google-bigquery,Python,Google App Engine,Google Bigquery,我正试图从google.cloud导入bigquery到我的python应用程序,并使用dev_appserver.py在本地运行它,但我收到一个错误: File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle handler = _config_handle.add_wsgi

我正试图从google.cloud导入bigquery到我的python应用程序
,并使用dev_appserver.py在本地运行它,但我收到一个错误:

File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/Volumes/Budhi/Users/anjas/Projects/wordworks/urlworker/main.py", line 9, in <module>
from google.cloud import bigquery
File "/Volumes/Budhi/Users/anjas/Projects/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 999, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named google.cloud.bigquery
我还尝试将它作为3d party library安装到lib目录中,但没有结果

虽然在我尝试从python shell导入bigquery库时它可以工作:

Python 2.7.10 (default, Jul 30 2016, 18:31:42) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more  information.
>>> from google.cloud import bigquery
>>> 
更新:

似乎安装到project/lib/folder的“google”模块与google cloud sdk/platform/google_appengine中的“google”模块冲突

当你想做什么的时候

from google.cloud import bigquery
python在谷歌云sdk/platform/google\u appengine/google中查找模块,而不是项目/lib/google/cloud


有什么想法吗?

您是否在appengine\u config.py中添加了lib文件夹

from google.appengine.ext import vendor
vendor.add('lib')

我也有同样的问题。如果在本地环境中运行此操作,则可能需要尝试将lib文件夹位置添加到$PYTHONPATH环境变量中,或在导入bigquery lib之前添加以下代码行,然后将lib文件夹位置插入指定模块搜索路径的字符串列表中

import sys    
sys.path.insert(0, 'lib')

我相信这是可行的,因为现在python文件不需要放在包中。

我认为您的体验与我的体验非常接近,尽管我在测试中看到了它

我认为这可能是因为GoogleSDK需要进行路径操作:sdk附带的libs比您放入libs文件夹的libs要早

以下是发生在我身上的一些细节:


我遇到了完全相同的错误,并通过删除appengine sdk中的google文件夹修复了此错误,或者您可以尝试将其复制到您的lib文件夹中。这将解决本地开发环境中的问题,但在生产环境中部署服务时需要恢复此功能


我找不到一个解决办法来同时保留googlecloudsdk/platform/google\u appengine/googleproject/lib/google/cloud。您需要删除其中一个

是否在项目根目录下的lib文件夹中安装了库?当然,我已尝试安装其他lib,如Flask,导入它们时没有问题。我遇到了相同的问题。我所有其他安装的供应商LIB工作正常。但是,我无法在本地或远程导入bigquery。我遵循了我能找到的每一个解决方案,但没有成功。是的,我做到了。不过,我还遇到了一些其他问题,安装lib/google的包中没有init.py,所以它没有被识别为包。添加init.py不会解决任何问题。似乎这个SDK是要在全球范围内安装的。但我已经在全球范围内安装了它,但没有结果。
vendor.add('lib')
基本上是
sys.path.insert()
的包装器。
import sys    
sys.path.insert(0, 'lib')