Python 如果存在包依赖关系冲突,如何停止pip安装?

Python 如果存在包依赖关系冲突,如何停止pip安装?,python,pip,pycharm,python-venv,Python,Pip,Pycharm,Python Venv,我确实安装了tensorflow gpu==1.12.3,因为我的gpu只能支持CUDA 9,而最新的tensorflow gpu==1.14.0至少需要CUDA 10。包依赖项之一是tensorboard 我想执行pip安装tensorflow。但是,最新版本警告必须安装较新版本的tensorboard,然后自动卸载现有版本并安装较新版本。在这种情况下,有没有办法让pip停止,或者至少要求确认,而不是自行进行?我正在尝试找出哪一个兼容版本的tensorflow,它不需要与tensorflow

我确实安装了tensorflow gpu==1.12.3,因为我的gpu只能支持CUDA 9,而最新的tensorflow gpu==1.14.0至少需要CUDA 10。包依赖项之一是
tensorboard

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

编辑

好的,只是澄清一下,这不是一个tensorflow特定的问题,我只是把它作为一个例子,因为我现在正好在做这个

概括来说:我安装了一个较旧版本的包A,它依赖于较旧版本的包B。我想安装包C,它也依赖于包B。但是,最新版本的C需要最新版本的B。当我尝试安装C时,它会自动卸载旧版本的B并安装最新版本。我怎样才能阻止它那样做

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

有没有更合适、更优雅的解决方案?我同意它给出一个警告,C需要一个更新版本的B,然后在那个时候终止,或者在继续卸载之前提示确认,而不是在没有请求的情况下自动执行

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


希望这听起来不太复杂 我从来没有在
tensorflow
上做过任何工作,所以我不能在这方面帮助您,但我可以建议您在测试东西时使用虚拟环境,不要冒破坏系统
Python
或升级特定版本的包的风险

python-m venv env
创建名为
env
的虚拟环境
source env/bin/activate
使虚拟环境处于活动状态,
停用
使其保持活动状态

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

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


也。似乎他们正在使用CUDA 9.2的1.8版和CUDA 9.1的1.7版。

公平地说,这不是一个tensorflow特定的问题,我只是将其作为一个例子,因为这正是我现在正在尝试的。碰巧我在我的PyCharm venv上做了这件事,所以虚拟环境被覆盖了。我明白了。我建议您尝试我在最后两段中描述的步骤,并告诉我们如何通过pip或其他方式检查给定包的依赖项+版本列表?最好在安装之前,但如果唯一可能的方式必须已经安装了软件包,我想我可以接受。如果有这样一种方法,我想它将大大有助于我管理我的问题。它应该用源代码编写。您应该查找文件
requirements.txt
,其中有包名和版本(可能还有其他内容)或
setup.py
文件(但是,很可能使用
find_packages
函数查找需求)。注意:Source中可能不存在
requirements.txt
,我刚刚发现您可以执行
pip安装--无deps
。我想这可能会解决你的问题