Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Heroku中bson更新后烧瓶应用程序已损坏_Python_Heroku_Pymongo_Mongoengine_Bson - Fatal编程技术网

Python Heroku中bson更新后烧瓶应用程序已损坏

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):

我有一个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):
  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安装以删除collections.abc行(显然您真的不需要它?),但弄乱生产打包代码是值得怀疑的

    pymongo模块

    您正在尝试使用的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'