我遇到了一些令人讨厌的依赖。
环顾四周我找到了一些解决方案,比如升级,降级……
有些解决方案对一些人有效,但对另一些人无效。
是否有更全面的方法来解决这个问题?
发布于 2022-11-09 10:09:09
首先,你需要明白pip可以一次解决一个问题,当你把它放在角落里时,它就不能更进一步了。
但是,如果你给出“大问题”,它有一个很好的方法来解决它。它可能并不总是起作用,但在大多数情况下,它会起作用。
你通常发现的解决方案在某些情况下是巧合的。某个人的环境类似于另一个人,一个解决方案对两者都适用。
但如果解决方案考虑到“你目前的环境”,那么解决方案应该对更多的人有效,而不仅仅是“巧合”。
免责声明:下面是linux/终端命令。
pip install --upgrade pip
在我的例子中(为了简洁起见,这些和许多其他的)
google-cloud-texttospeech attrdict google-cloud-language transformers
pip install google-cloud-texttospeech attrdict google-cloud-language transformers
它将尝试所有版本和依赖项版本的组合,直到找到合适的版本为止。这可能会下载大量的软件包,仅仅是为了查看它们的依赖关系,所以您只想这样做一次。
如果
pip freeze > requirements.txt
这包含所有的软件包安装,我们并不感兴趣的所有。
并从中提取所需软件包的特定版本。
cat requirements.txt | egrep -i "google-cloud-texttospeech|attrdict|google-cloud-language|transformers"
注意:上面的命令可能不会列出所有必需的包,只列出出现在requirements.txt中的包,所以检查所有的包是否都显示出来。
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
发布于 2022-11-09 11:00:00
要测试这一点:
这样,我可以更快地升级和添加库。
如果所有库都使用语义版本控制,并通过需求文件声明所有的依赖关系,并且而不是在需求文件中定义了高级版本,那么这将简单得多。不幸的是,我使用的其中一个DB供应商(我将不给它命名)非常有问题,并且有一个有问题的Python库(以及许多其他问题)。
https://stackoverflow.com/questions/74373058
复制相似问题