【问题标题】:Conda showing two versions of requests libraryConda 显示两个版本的请求库
【发布时间】:2017-09-01 09:46:56
【问题描述】:

我是 conda 的新手,看到一些奇怪的东西,但我实际上不知道这是否有问题。

我目前处于根环境中。在某些时候,我试图在另一个环境中安装 pip,但不小心运行了pip install requests。这似乎已经在我的根环境中安装了它:

$ conda list | grep requests
requests                  2.12.4                   py36_0  
requests                  2.13.0                    <pip>

看起来 pip 版本是我运行 python 时得到的:

$ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests; requests.__version__
'2.13.0'

我的猜测是,拥有相同软件包的两个版本会在以后引起头痛。然后我的假设是我最好保留非pip版本,所以我尝试了这个:

$ pip uninstall requests
[asks for confirmation, say yes]
$ conda list
[traceback, which I can post if helpful. Summary is:]
ModuleNotFoundError: No module named 'requests'

然后pip install requests 将我带回到第 1 格(有两个版本的请求)。

最后,我想知道如何防止这种情况再次发生。根据docs,如果我想在conda环境中使用pip安装包,我应该:

  1. 激活要安装包的 conda 环境
  2. 运行pip install whatever
  3. 它应该显示在当前环境的conda list 中。

但是,这对我不起作用 - 已安装的软件包显示在 conda list --name root 下,而不是在当前环境中。


所以,几个问题:

  1. 在我的 conda 根目录中有两个 requests 副本是否有问题?
  2. 如果这是一个问题,我该如何解决?
  3. 如何在 conda 环境中使用 pip?

【问题讨论】:

    标签: python conda miniconda


    【解决方案1】:
    1. 在我的 conda 根目录中有两个请求副本是否有问题?

    大概吧。

    1. 如果这是一个问题,我该如何解决?

    在我的测试中,conda remove 后跟 pip uninstall 可以解决问题。 (之后您可以只使用 conda 重新安装请求。)但是如果出现问题,请删除 .../lib/python3.6/site-packages/requests-2.13.0.dist-info。这似乎对我有用。

    FWIW,我只能通过使用 pip first 安装,然后使用 conda 再次安装来重现双重安装。

    1. 如何在 conda 环境中使用 pip?

    您在 OP 中的摘要是正确的。只需激活 conda 环境并像往常一样使用 pip 即可。我的经验法则是使用conda 安装软件包(如果可用),否则使用pip

    【讨论】:

    • 感谢您的详细回复——但是当我尝试conda remove requests 时,我得到:CondaEnvironmentError: Environment error: cannot remove python, pycosat, ruamel_yaml, conda, openssl, requests from root environment
    • 糟糕,我正在尝试非 root 环境。 (我应该知道你会看到那个错误...I put it there!)好的,你有没有尝试过“如果出现问题......”的建议?也就是说,只需删除 the dist-info 文件夹,然后查看 'pip' 版本是否从列表中消失。
    • 另一个技巧:当您的根环境确实出现问题时,您可能不得不从头开始安装单独的 conda。但有时您可以使用单独安装来修复第一个。我猜conda remove -p /path/to/original-root-env requests 会起作用,如果从 new conda 安装运行它。然后你可以再次重新安装requests
    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2018-09-28
    • 2021-05-27
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多