简体   繁体   中英

from google.cloud import firestore ModuleNotFoundError: No module named 'google'

I am unable to get my application working reading documents from Google Firestore.

Here is my python Flask main.py

from flask import Flask
from google.cloud import firestore

app = Flask(__name__)
db = firestore.Client()

@app.route('/')
def hello():
    posts_ref = db.collections(u'posts')
    posts = posts_ref.get()
    for post in posts:
        return u'{} => {}'.format(post.id, post.to_dict())


if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8080, debug=True)

However the logs are showing the following error.

2019-02-22 12:33:08 default[2-9]  "GET / HTTP/1.1" 502
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [8] [INFO] Starting gunicorn 19.9.0
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [8] [INFO] Listening at: http://0.0.0.0:8081 (8)
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [8] [INFO] Using worker: threads
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [23] [INFO] Booting worker with pid: 23
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [23] [ERROR] Exception in worker process
2019-02-22 12:33:10 default[2-9]  Traceback (most recent call last):    File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py",l
ine 583, in spawn_worker      worker.init_process()    File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 104,
 in init_process      super(ThreadWorker, self).init_process()    File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py",li
ne 129, in init_process      self.load_wsgi()    File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_
wsgi      self.wsgi = self.app.wsgi()    File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi      self.cal
lable = self.load()    File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load      return self.load_wsgiap
p()    File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp      return util.import_app(self.app
_uri)    File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app      __import__(module)    File "/srv/main
.py", line 2, in <module>      from google.cloud import firestore  ModuleNotFoundError: No module named 'google'
2019-02-22 12:33:10 default[2-9]  [2019-02-22 12:33:10 +0000] [23] [INFO] Worker exiting (pid: 23)
2019-02-22 12:33:11 default[2-9]  [2019-02-22 12:33:11 +0000] [8] [INFO] Shutting down: Master

My directory structure

在此输入图像描述

I have init .py in lib folder and in google folder.

As dustin-ingram@ suggests, it's probable that you've not imported the google.cloud.firestore (and possibly flask ) packages correctly.

A good practice is to create a virtualenv, a requirements.txt and then pip install -r requirements.txt . Its contents may be:

flask==1.0.2
google-cloud-firestore==0.31.0

You've also a typo in your code; it's collection not collections :

posts_ref = db.collection(u'posts')

You will need to have enabled Firestore in your project (and possibly created the posts collection before you run your code too).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM