Python Heroku中bson更新后烧瓶应用程序已损坏
我有一个Flask应用程序,它使用mongoengine并在Heroku上运行,我使用了Python Heroku中bson更新后烧瓶应用程序已损坏,python,heroku,pymongo,mongoengine,bson,Python,Heroku,Pymongo,Mongoengine,Bson,我有一个Flask应用程序,它使用mongoengine并在Heroku上运行,我使用了bson包,在我将其从0.5.6更新到0.5.7 我开始收到以下错误消息: [2018-11-23 05:56:43 +0000] [39] [INFO] Worker exiting (pid: 39) [2018-11-23 05:56:43 +0000] [40] [ERROR] Exception in worker process Traceback (most recent call last):
bson
包,在我将其从0.5.6
更新到0.5.7
我开始收到以下错误消息:
[2018-11-23 05:56:43 +0000] [39] [INFO] Worker exiting (pid: 39)
[2018-11-23 05:56:43 +0000] [40] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "/app/slots_tracker_server/__init__.py", line 5, in <module>
from mongoengine import connect
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/__init__.py", line 2, in <module>
from mongoengine import connection
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/connection.py", line 1, in <module>
from pymongo import MongoClient, ReadPreference, uri_parser
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/__init__.py", line 77, in <module>
from pymongo.collection import ReturnDocument
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/collection.py", line 20, in <module>
from bson.code import Code
File "/app/.heroku/python/lib/python3.6/site-packages/bson/code.py", line 18, in <module>
from bson.py3compat import abc, string_type, PY3, text_type
ImportError: cannot import name 'abc'
请注意,pymongo>=2.7.1
作为mongoengine
更新:
删除bson
并将pymongo==3.7.2
添加到需求文件后,我得到以下错误:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "/app/slots_tracker_server/__init__.py", line 5, in <module>
from mongoengine import connect
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/__init__.py", line 2, in <module>
from mongoengine import connection
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/connection.py", line 1, in <module>
from pymongo import MongoClient, ReadPreference, uri_parser
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/__init__.py", line 77, in <module>
from pymongo.collection import ReturnDocument
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/collection.py", line 20, in <module>
from bson.code import Code
File "/app/.heroku/python/lib/python3.6/site-packages/bson/code.py", line 18, in <module>
from bson.py3compat import abc, string_type, PY3, text_type
ModuleNotFoundError: No module named 'bson.py3compat'
回溯(最近一次呼叫最后一次):
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/arbiter.py”,第583行,在spawn_worker中
worker.init_进程()
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/workers/base.py”,第129行,在init_进程中
self.load_wsgi()
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/workers/base.py”,第138行,在load\u wsgi中
self.wsgi=self.app.wsgi()
wsgi中的文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/app/base.py”,第67行
self.callable=self.load()
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/app/wsgiapp.py”,第52行,已加载
返回self.load_wsgiapp()
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/app/wsgiapp.py”,第41行,在load_wsgiapp中
return util.import\u app(self.app\u uri)
文件“/app/.heroku/python/lib/python3.6/site packages/gunicorn/util.py”,第350行,在导入应用程序中
__导入(模块)
文件“/app/slots\u tracker\u server/\u__init\u_.py”,第5行,在
从mongoengine导入连接
文件“/app/.heroku/python/lib/python3.6/site packages/mongoengine/_init__.py”,第2行,在
从mongoengine导入连接
文件“/app/.heroku/python/lib/python3.6/site packages/mongoengine/connection.py”,第1行,在
从pymongo导入MongoClient、ReadPreference、uri\u解析器
文件“/app/.heroku/python/lib/python3.6/site packages/pymongo/_init__.py”,第77行,在
从pymongo.collection导入返回文档
文件“/app/.heroku/python/lib/python3.6/site packages/pymongo/collection.py”,第20行,在
从bson.code导入代码
文件“/app/.heroku/python/lib/python3.6/site packages/bson/code.py”,第18行,在
从bson.py3compat导入abc、字符串类型、PY3、文本类型
ModuleNotFoundError:没有名为“bson.py3compat”的模块
pymongo>=2.7.1指令覆盖bson安装
从
不要从pypi安装“bson”包。PyMongo有它的
拥有bson软件包;执行“easy_install bson”安装第三方
与PyMongo不兼容的包
假设您真的想使用第三方bson,您需要
pip卸载bson
(删除通过pymongo包登陆的被覆盖的bson)pip安装bson
(重新安装py bson软件包)我应该如何使用
pymongo bson
模块?在我的pip freeze
中,我有bson==0.5.7
,因为它是我的需求文件的一部分,但是如果pymonogo
具有相同的功能,我就不必使用它。另外,我没有直接使用pymongo
,我使用的是mongoengine==0.16.1
,它安装了pymongo
,我看到我可以从bson import json_util使用,但这不是直观的(而且在PyCharm中也会引起一个错误)使用一个我没有安装的软件包。它应该很容易从requirements.txt中删除bson,并包括包含bson软件包的pymongo(mongo不允许将其分开,这很痛苦)。我用您的需求文件完成了这项工作,打开了一个python解释器,并以abc的形式运行了import collections.abc
,它没有抛出我在Heroku上运行的问题的错误,因此我无法控制环境的设置。我运行heroku repo:purge_cache-一个应用程序名称,并从Git重新部署该应用程序,现在它似乎正在工作。Hi@shiomiLan只是为了补充讨论,我遇到了这个问题,通过先安装bson,然后安装pymongo,解决了我的heroku部署问题。很有味道。
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "/app/slots_tracker_server/__init__.py", line 5, in <module>
from mongoengine import connect
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/__init__.py", line 2, in <module>
from mongoengine import connection
File "/app/.heroku/python/lib/python3.6/site-packages/mongoengine/connection.py", line 1, in <module>
from pymongo import MongoClient, ReadPreference, uri_parser
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/__init__.py", line 77, in <module>
from pymongo.collection import ReturnDocument
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/collection.py", line 20, in <module>
from bson.code import Code
File "/app/.heroku/python/lib/python3.6/site-packages/bson/code.py", line 18, in <module>
from bson.py3compat import abc, string_type, PY3, text_type
ModuleNotFoundError: No module named 'bson.py3compat'