python3烧瓶应用程序中的pymongo导入错误

sud*_*hkr 2 python mongodb pymongo python-3.x pymongo-3.x

我有一个flask基于python 的应用程序,它写入mongo数据库.

我正在使用python 3以下内容requirements.txt

Flask
Jinja2
Werkzeug
certifi
chardet
gunicorn
requests
flask_restful
flask
pymongo
Run Code Online (Sandbox Code Playgroud)

我遇到了这个问题:

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'
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样?

这部分是我关心的

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'
Run Code Online (Sandbox Code Playgroud)

大多数互联网博客/链接都告诉我bson,pymongo并且彼此不能很好地互动.pymongo有自己的版本,bson我不需要它在我的requirements.txt.

我正在寻求帮助,看看为什么会发生这种情况,以及如何重新解决这个问题.


更新#1

我正在使用pymongo-3.5.1,这就是问题仍然存在的地方.我只是降级到pymongo-3.5.0了,问题就消失了.

这意味着我知道解决此问题的解决方法,但上游代码/包有一些需要修复的问题.

jdo*_*doe 6

尝试卸载两者bsonpymongo:

sudo pip uninstall bson
sudo pip uninstall pymongo
Run Code Online (Sandbox Code Playgroud)

然后pymongo 使用pip重新安装:

sudo pip install pymongo
Run Code Online (Sandbox Code Playgroud)