【发布时间】:2020-06-26 22:40:46
【问题描述】:
我有一个基于 python flask 的应用程序,它写入 mongo 数据库。
我正在使用python 3 和以下requirements.txt
Flask
Jinja2
Werkzeug
certifi
chardet
gunicorn
requests
flask_restful
flask
pymongo
我遇到了这个问题:
Traceback (most recent call last):
File "bin/app.py", line 4, in <module>
from helper import save_message_2_db
File "/app/bin/helper.py", line 1, in <module>
from database import DataAccess, MongoDB
File "/app/bin/database.py", line 1, in <module>
import pymongo
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/__init__.py", line 83, in <module>
from pymongo.collection import ReturnDocument
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/collection.py", line 21, in <module>
from bson.code import Code
File "/app/.heroku/python/lib/python3.6/site-packages/bson/code.py", line 19, in <module>
from bson.py3compat import string_type, PY3, text_type
ModuleNotFoundError: No module named 'bson.py3compat'
我想了解为什么会发生这种情况?
这部分是我关心的
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/__init__.py", line 83, in <module>
from pymongo.collection import ReturnDocument
File "/app/.heroku/python/lib/python3.6/site-packages/pymongo/collection.py", line 21, in <module>
from bson.code import Code
File "/app/.heroku/python/lib/python3.6/site-packages/bson/code.py", line 19, in <module>
from bson.py3compat import string_type, PY3, text_type
ModuleNotFoundError: No module named 'bson.py3compat'
大多数互联网博客/链接告诉我bson 和pymongo 不能很好地相互配合。 pymongo 有自己的bson 版本,我的requirements.txt 不需要它。
我正在寻求帮助,看看为什么会发生这种情况,以及如何解决这个问题。
更新 #1
我使用的是pymongo-3.5.1,这就是问题仍然存在的地方。我刚刚降级到pymongo-3.5.0,问题就消失了。
这意味着我知道解决此问题的解决方法,但上游代码/包有一些需要修复的问题。
【问题讨论】:
-
我相信上述错误与我的
python version和requirements.txt有关 -
您是否再次尝试升级?这两个版本之间的 comparison 不会显示与您的问题相关的更改。
-
@c11o - 这太疯狂了,我想我在 heroku 部署过程中遇到了某种问题。现在我搬到了最新的,我没有看到这个问题。
-
还是让我抓狂,为什么会这样? heroku 上的 buildpack 会破坏 virtualenv 并每次都将其复活。
标签: python mongodb python-3.x pymongo pymongo-3.x