首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pip安装除夕包安装bson和pymongo打破pymongo

pip安装除夕包安装bson和pymongo打破pymongo
EN

Stack Overflow用户
提问于 2019-02-01 17:25:56
回答 3查看 1.2K关注 0票数 0

我有一个使用python前夕的项目,但最近我遇到了一个令人恼火的依赖问题。

我使用一个requirements.txt文件在码头容器中安装依赖项。

但是,安装Eve包会将pymongo安装为一种依赖关系。pymongo依赖于bson模块,但不依赖于pypi bson模块。但是,pip安装的pypi bson模块将无法与pymongo一起工作,从而导致以下错误:

代码语言:javascript
复制
from bson.py3compat import abc, string_type, PY3, text_type
ImportError: cannot import name 'abc'

当芒果被进口时。

我必须调整我的dockerfile来做这样的事情:

代码语言:javascript
复制
RUN pip3 install -r requirements.txt
RUN pip3 uninstall bson --yes
RUN pip3 uninstall pymongo --yes
RUN pip3 install pymongo --user

是否有一种方法在管道文件或requirements.txt中表明它不需要尝试从pypi安装bson?

EN

回答 3

Stack Overflow用户

发布于 2019-02-01 19:04:38

pymongo不把bson作为依赖项,它只是有自己的bson实现。问题是,pymongo将其bson安装为site-packages/中的顶级目录,从而覆盖现有的bson

解决这个问题没有简单的方法。试着联系pymongo作者,并说服他们停止覆盖顶级bson。

票数 1
EN

Stack Overflow用户

发布于 2020-07-24 06:09:12

卸载bson和pymongo。使用pip install pybson将原始bson安装为"pybson“,然后可以将两者并行。我从(py)bson项目中请求更改这个名称,请参阅https://github.com/py-bson/bson/issues/70。这是偶然的,或多或少与@phd所建议的从pymongo得到的正好相反。(py)bson项目成员“立即”做到了这一点。

我知道您必须在安装pymongo之后才能使import pybson工作,请参阅Why do I have to install pymongo after pybson (=bson, GitHub:py-bson) to get pybson imported successfully?。在使用原始pip install bson而不是pip install pybson安装bson时,您必须遵守命令: 1. bson,2. pymongo,参见Can't connect to MongoDB 2.0.5 database with pymongo 2.2

我还没有测试pip install pybson (而不是pip install bson )的技巧是否使您安装的顺序( 1. pybson和2. pymongo )无关,反之亦然,但很可能是因为顺序与此无关。

另一方面,通常按照安装顺序(1. (py)bson和2. pymongo)也没有坏处,那么为什么不这样做呢?安装作为pybson和正确的安装顺序都可能解决问题,所以为什么不两者都做。

如果将bson安装为pybson,则可以选择在一个脚本中使用两个包的两个不同的bson模块。因此,我建议:

  • 第一pip install pybson
  • 然后是pip install pymongo

我检查了使用pip install pybson安装bson包(不是bson!)时是否需要这样的命令。在安装了pymongo之后,我安装了pybson。它不会损害pymongo的安装,而且import pybson也能工作。从这一点我们可以看到,安装顺序不再重要时,使用pybson技巧。

票数 1
EN

Stack Overflow用户

发布于 2021-08-22 04:28:10

实际上,首先是pip install bson,然后是pip install pymongo。这对我有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54484316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档