如果存在软件包依赖项冲突,如何停止pip安装?

时间:2019-09-07 07:11:07

标签: python pip pycharm python-venv

我之所以这样做pip install tensorflow-gpu==1.12.3是因为我的GPU仅支持CUDA 9,而最新的tensorflow-gpu==1.14.0要求最少CUDA10。其中一个软件包依赖项是tensorboard

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

修改

好吧,这不是一个特定于张量流的问题,我只是以它为例,因为我刚好在做这个事情。

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

现在,我唯一的解决方法是安装C版本,等待它自动卸载某些东西,然后中断C的安装,然后重新安装已卸载的依赖项软件包的版本。然后,我下一个下一个较旧的版本C,然后重复。基本上是一个反复试验的过程。

是否有更合适,更优雅的解决方案?我可以接受警告,警告C要求B的更新版本,然后在该位置终止,或者提示您进行确认,然后再继续进行卸载,而不是在不询问的情况下自动进行。

我正在使用PyCharm的venv,因此,如果有一种方法可以将对环境的最新更改还原,即卸载C以及已安装的任何新依赖包,并在执行之前还原为已安装的包列表,那么我也很好pip install C

希望这听起来并不复杂。 ?

1 个答案:

答案 0 :(得分:0)

我从没做过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安装所需的版本。 / p>

此外,here is a guide that explains installation of tensorflow with CUDA 9。看来他们在CUDA 9.2上使用1.8版,在CUDA 9.1上使用1.7版。