首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用pip时解决python库依赖关系

如何在使用pip时解决python库依赖关系
EN

Stack Overflow用户
提问于 2022-11-09 10:09:09
回答 2查看 43关注 0票数 0

我遇到了一些令人讨厌的依赖。

环顾四周我找到了一些解决方案,比如升级,降级……

有些解决方案对一些人有效,但对另一些人无效。

是否有更全面的方法来解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-09 10:09:09

首先,你需要明白pip可以一次解决一个问题,当你把它放在角落里时,它就不能更进一步了。

但是,如果你给出“大问题”,它有一个很好的方法来解决它。它可能并不总是起作用,但在大多数情况下,它会起作用。

你通常发现的解决方案在某些情况下是巧合的。某个人的环境类似于另一个人,一个解决方案对两者都适用。

但如果解决方案考虑到“你目前的环境”,那么解决方案应该对更多的人有效,而不仅仅是“巧合”。

免责声明:下面是linux/终端命令。

  1. 升级pip.我们想要能得到的最聪明的点子。--

pip install --upgrade pip

  1. 解压缩要安装的软件包列表.

在我的例子中(为了简洁起见,这些和许多其他的)

google-cloud-texttospeech attrdict google-cloud-language transformers

  1. 给他们一次机会,

pip install google-cloud-texttospeech attrdict google-cloud-language transformers

它将尝试所有版本和依赖项版本的组合,直到找到合适的版本为止。这可能会下载大量的软件包,仅仅是为了查看它们的依赖关系,所以您只想这样做一次。

如果

  1. 对结果满意,则提取需求文件.

pip freeze > requirements.txt

这包含所有的软件包安装,我们并不感兴趣的所有。

并从中提取所需软件包的特定版本。

cat requirements.txt | egrep -i "google-cloud-texttospeech|attrdict|google-cloud-language|transformers"

注意:上面的命令可能不会列出所有必需的包,只列出出现在requirements.txt中的包,所以检查所有的包是否都显示出来。

代码语言:javascript
运行
复制
attrdict==2.0.1
google-cloud-language==1.2.0
google-cloud-texttospeech==2.12.3
transformers==2.11.0

现在你可以把它放在像resolved-dependencies.txt这样的文件上了

下一次,直接用有效和兼容的版本安装软件包。

pip install -r resolved-dependencies.txt

票数 0
EN

Stack Overflow用户

发布于 2022-11-09 11:00:00

要测试这一点:

  1. 我编写了一个脚本来创建一个虚拟环境,尝试安装一个需求文件,然后删除这个环境,我运行这个环境是为了快速测试对需求的更改是否导致安装成功。

  1. 我编写了一个“测试应用程序”,它使用了我在一个地方使用的所有库的基本功能,以查看尽管安装成功,但是pip没有意识到的依赖(由于第三方库体系结构有问题)是否会中断。我可以编辑这个应用程序的依赖项,然后提交运行它的构建操作,看看它是否完成或崩溃。

这样,我可以更快地升级和添加库。

如果所有库都使用语义版本控制,并通过需求文件声明所有的依赖关系,并且而不是在需求文件中定义了高级版本,那么这将简单得多。不幸的是,我使用的其中一个DB供应商(我将不给它命名)非常有问题,并且有一个有问题的Python库(以及许多其他问题)。

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

https://stackoverflow.com/questions/74373058

复制
相关文章

相似问题

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