2017-10-23 5 views
1

私はPython flaskベースのappを持っています。これはmongoデータベースに書き込みます。python3フラスコアプリケーションのpymongoインポートエラー

私はこの問題に遭遇し、次のrequirements.txt

Flask 
Jinja2 
Werkzeug 
certifi 
chardet 
gunicorn 
requests 
flask_restful 
flask 
pymongo 

python 3を使用しています:

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' 

私はこれが起こるん理由を理解しようとしていますか?

このセクションでは、私はインターネットのブログ/リンクのほとんどはbsonpymongoはお互いによく遊ぶいけない私に教えて

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' 

と心配するものです。 pymongobsonという独自のバージョンを持っています。私はrequirements.txtにそれを必要としません。

私は、これがなぜ起こるのか、これをどのように修正するのかを知る助けが必要です。


更新#1

私はpymongo-3.5.1を使用して、問題が解決しないのthatsました。私はちょうどpymongo-3.5.0にダウングレードし、問題はなくなった。

これはこれを解決するための回避策を知っていますが、上流のコード/パッケージには修正が必要な問題があります。

+0

上記のエラーは私の 'python version'と' requirements.txt'と関係があると思います – sudhishkr

+0

もう一度アップグレードを試みましたか?これら2つのバージョン間の[比較](https://github.com/mongodb/mongo-python-driver/compare/0b0f045...ca57ece)では、問題の関連する変更は表示されません。 – c11o

+0

@ c11o - これはクレイジーです、私は私のヒーローデプロイ手順で何らかの問題を抱えていたと思います。今私は最新に移動し、私はその問題を見ていない。 – sudhishkr

答えて

1

bsonpymongoの両方をアンインストールしてみてください。そして、

sudo pip uninstall bson 
sudo pip uninstall pymongo 

とピップを使用してpymongoを再インストールします。

sudo pip install pymongo 
+0

yeahp - これを試してみました。これが私の質問に投稿し、要件ファイルを提供した理由です。 – sudhishkr

+0

私は確信していません - なぜこのステップがうまくいかなかったのですか、私が試したのはこれのようなものでした。これは私がこれを打つ理由はまだまだ謎であると主張しているheroku – sudhishkr

1

それが起こっているいくつかのパッケージの設定ミスかもしれません。 bsonパッケージが mongo-python-driverである場合は、19行目以降インポート文from bson.py3compat import string_type, PY3, text_typeが存在する可能性があります。

ファイルpy3compat.pyが見つからないようですが、code.pyのすぐ隣、bsonのパスにあるはずです。

更新

私たちはダウングレードを知らせる質問の更新は問題を修正し、両方のバージョン間のcode changesを検査した後、問題に該当する変更は、識別されません。したがって、モジュールに何か問題があり、正確には分かりにくいものがあることをさらに示唆しています。

+0

のisueeでした。 – sudhishkr

+0

私は自分の所見を更新しています。 – sudhishkr

+0

あなたの答えを更新することができます - 私はこの問題をデバッグするための手順を見つける正しいアプローチとしてそれを選択できます。 – sudhishkr

関連する問題