【问题标题】:How do I stop a pip install if there are package dependency conflicts?如果存在包依赖冲突,如何停止 pip 安装?
【发布时间】:2020-01-09 21:25:34
【问题描述】:

我之所以选择pip install tensorflow-gpu==1.12.3,是因为我的 GPU 只能支持 CUDA 9,而最新的 tensorflow-gpu==1.14.0 至少需要 CUDA 10。其中一个包依赖项是 tensorboard

我想做pip install tensorflow。但是,最新版本警告必须安装较新版本的tensorboard,然后自动继续卸载现有版本并安装较新版本。有没有办法让点子停止或至少要求确认而不是在这种情况下自行进行?我试图找出哪个是tensorflow 的兼容版本,它不需要与tensorflow-gpu 共享的更新版本的包依赖项。

编辑

好吧,澄清一下,这不是一个特定于 tensorflow 的问题,我只是将其用作示例,因为我恰好现在正在这样做。

概括地说:我安装了旧版本的包 A,它依赖于旧版本的包 B。我想安装包 C,它也依赖于包 B。但是,最新版本的 C需要最新版本的 B。当我尝试安装 C 时,它会自动卸载旧 B 并安装最新版本。我该如何阻止它这样做?

目前我唯一的解决方法是安装一个版本的C,等待它自动卸载一些东西,然后中断C的安装,并重新安装被卸载的依赖包的版本。然后我降级到下一个旧版本 C,然后重复。基本上是一个反复试验的过程。

有没有更合适更优雅的解决方案?我可以警告 C 需要更新版本的 B 然后在该点终止,或者在继续卸载之前提示确认,而不是在不询问的情况下自动执行。

我正在使用 PyCharm 的 venv,所以如果有办法恢复对环境的最新更改,即卸载 C 和已安装的任何新依赖包,在我执行之前恢复到已安装包的列表,我也可以pip install C.

希望这听起来不会太复杂。 ????

【问题讨论】:

    标签: python pip pycharm python-venv


    【解决方案1】:

    我从未使用过tensorflow,因此我无法帮助您完成这部分工作,但我可以建议您在测试内容时使用虚拟环境,不要冒破坏系统Python 或升级您想要的软件包的风险具体版本。

    python -m venv env 创建名为env 的虚拟环境。 source env/bin/activate 激活虚拟环境,deactivate 离开它。

    关于覆盖旧包,我没有找到提示安装新版本的选项,也没有找到忽略某个包要求的选项。这可能是因为开发人员可以指定需要哪个版本的依赖项,因此如果pip 发现过时的包,您希望安装的包可能无法与它一起使用。

    但是,您可以尝试安装最新版本的tensorflow 并让它安装所需的要求,然后使用pip uninstall PACKAGE-NAME 简单地卸载它们并使用pip install PACKAGE-NAME==x.x.x 安装您想要的版本。

    另外,here is a guide that explains installation of tensorflow with CUDA 9。看来他们使用的是 1.8 版的 CUDA 9.2 和 1.7 版的 CUDA 9.1。

    【讨论】:

    • 好吧,公平地说,这不是一个特定于 tensorflow 的问题,我只是将其用作示例,因为这正是我现在正在尝试做的事情。碰巧我实际上是在我的 PyCharm venv 中执行此操作的,因此覆盖了虚拟环境。
    • 我明白了。我建议您尝试我在最后两段中描述的步骤,并告诉我们进展如何
    • 有没有办法通过 pip 或其他方式检查给定包的依赖项+版本列表?最好在安装之前,但如果唯一可能的方法必须已经安装了软件包,我想我可以忍受。如果有这样的方法,我认为它将大大帮助我解决我的问题。
    • 它应该写在源代码的某个地方。您应该查找文件requirements.txt,里面写有包名称和版本(可能还有其他内容)或setup.py 文件(但是,很可能find_packages 函数用于查找需求)。注意:requirements.txt 可能不存在于源中
    • 我刚刚发现你可以做pip install --no-deps。我认为这可能会解决您的问题
    猜你喜欢
    • 2016-01-23
    • 2021-03-14
    • 2023-02-12
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多