背景:
作为学生项目的一部分,我去年一直在研究服务器。现在正在更改服务器,不幸的是,我编写的一段代码未能通过测试。我无权访问服务器(由于安全问题),但好消息是我有脚本以及安装在新服务器上的软件包(及其版本)。所以我决定将服务器上的所有包都安装在我自己的本地机器上,在一个环境中模仿服务器。
问题:由于并非所有包都可用于 conda(或需要指定通道),我决定创建一个 conda 环境并使用 pip 安装所有包。一旦我创建了环境,conda 就会安装一堆包(如wheel
、pip
、ipython
、certifi
等)。但我需要它们的某个(旧)版本。所以我试图用pip install -U <package_name>==<version>
. 但是对于某些包,我最终得到了两个不同的版本:一个是 conda 在创建环境时安装的默认版本,另一个是 pip。现在,当我运行我的代码时,我不确定正在使用这些包的哪个版本。所以我只想保留一个版本:通过 pip 安装的那个!
问题:
- 如何在保留 pip 的同时卸载使用 conda 安装的软件包?我
conda remove <package_name>
期望只有 conda 安装的软件包会被擦除,但事实并非如此,两者都永远消失了! - 如何通过 pip 覆盖 conda 安装的版本?我知道 conda 是为了避免采取这种行动来保护环境免于变得混乱,但就我而言,它让我想到了另一个问题,
- 首先,如何使环境与服务器完全相同,以便不再处理 conda/pip 包?