首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我必须在pybson之后安装pymongo (=bson,GitHub: pybson )才能成功导入pybson?

为什么我必须在pybson之后安装pymongo (=bson,GitHub: pybson )才能成功导入pybson?
EN

Stack Overflow用户
提问于 2020-07-24 06:17:42
回答 1查看 892关注 0票数 0

+++

编辑:在把这个问题放到网上很长一段时间后,我注意到这是Can't connect to MongoDB 2.0.5 database with pymongo 2.2的副产品,它说在安装pymongo之前必须先安装bson。我在这里要求的不是这个已经知道的解决方案,而是这个所需的安装订单。我还添加了一个小东西,我将"bson“模块安装为"pybson",这使得区分这两个包的import bson名称冲突成为可能。

+++

我正在使用一种解决方法来避免pymongo的bson模块和bson (py-bson on GitHub) bson模块的名称冲突:我正在将bson包安装为pybson,参见https://github.com/py-bson/bson/issues/70

pip install of eve package installs bson and pymongo which breaks pymongo的回答中,我们得出了主要的想法:

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

但这并不能解释为什么InstallOrder1.bson 2. pymongo解决了这个问题,相反,您会期望它完全相反!

在我的例子中,我已经安装了一个新的系统,使用anaconda作为基础。我使用pip install pybson安装了bson,它说:

跟踪(最近一次调用):

文件"",第1行,导入pybson #,与bson相同

文件"C:\Users\Admin\anaconda3\lib\site-packages\pybson_init_.py",第23行,从.objectid导入ObjectId

文件"C:\Users\Admin\anaconda3\lib\site-packages\pybson\objectid.py",第30行,从bson.py3compat导入PY3、bytes_from_hex、string_type、text_type

ModuleNotFoundError:没有名为“bson”的模块

除了pybson之外,在安装pymongo之后,使用conda install pymongoimport pybson语句可以工作。为什么?

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-27 16:23:23

这个问题所引用的观点必须反过来说:pip install bsonpip install pymongo之后干扰pymongo的bson依赖,这样pymongo的bson模块就不再工作了。这可能不是因为bson覆盖了pymongo的bson依赖,而是因为名称冲突:两个包都使用相同的bson模块' bson ',这导致了同样的效果,就好像bson覆盖了pymongo的bson。

奇怪的是:正如问题所述,除了(py)bson之外,还必须安装pymongo。这暗示了bson在自己的包中使用了pymongo的bson依赖项。

由于在pip install bson之后使用pip install pymongo安装bson会干扰pymongo的bson,请参阅Can't connect to MongoDB 2.0.5 database with pymongo 2.2,我们可以假设两个bson模块之间存在名称冲突,而bson模块是最后一个安装的bson模块。看起来(py)bson包除了自己的bson模块外,还需要一个占主导地位的pymongo依赖项,并且(py)bson在其内部脚本中将pymongo依赖项作为import bson导入,即使它有bson模块本身。我不知道这种控制是由覆盖引起的,还是仅仅是python环境的问题。前者更有可能发生,因为安装顺序(第一次pip install bson,之后是pip install pymongo),在您用pip install pybson而不是pip install bson安装bson时,就变得无关紧要了,请参阅pip install of eve package installs bson and pymongo which breaks pymongo

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

https://stackoverflow.com/questions/63067922

复制
相关文章

相似问题

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