在安装Python包时支持pip与conda

Dus*_*els 9 python pip python-3.x conda miniconda

我使用miniconda作为我的默认python安装.关于何时安装带有conda和pip的东西的当前(2019)智慧是什么?

我通常的行为是使用pip安装所有内容,如果没有通过pip可用的包或者pip版本无法正常工作,则仅使用conda.

总是偏爱有优势conda install吗?是否存在与混合两个安装程序相关的问题?我应该考虑哪些因素?


注意:我不相信这是一个基于意见的问题.我不是简单地问"你更喜欢什么?".我的问题是,我可以选择安装python包,pip或者conda如何做出明智的决定?不是"告诉我哪个更好,但是" 为什么我会使用一个而不是另一个,并且会来回摆动导致问题/效率低下?"

mer*_*erv 13

注意:以下建议现已成为官方文档的一部分


目前(2019 年)关于何时使用condavs.安装某些东西的智慧是什么pip

Anaconda Inc 的 Jonathan Helmus 在“在 Conda 环境中使用 Pip ”一文中很好地总结了这一点。以下是最终最佳实践建议的摘录:

最佳实践清单

pip仅在之后使用conda

  • 安装尽可能多的需求conda,然后使用pip
  • pip 应该与--upgrade-strategy "only-if-needed"(默认)一起运行
  • 不要pip--user参数一起使用,避免所有“用户”安装

使用 Conda 环境进行隔离

  • 创建康达环境隔离的任何更改pip品牌
  • 由于硬链接,环境占用的空间很小
  • 应注意避免piproot [ base ] 环境中运行

如果需要更改,请重新创建环境

  • 一旦pip被使用conda将不会意识到变化
  • 要安装其他 Conda 软件包,最好重新创建环境

文本文件中的存储condapip要求

  • 可以conda通过--file参数传递包要求
  • pip接受带有-r或的 Python 包列表--requirements
  • conda env将根据具有condapip要求的文件导出或创建环境

  • @David293836 [进行 YAML 定义](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#create-env-file-manually) - 这允许Conda 和 PyPI 包的规范。一个好的入门方法是首先使用 `conda env export -n your_env > env.yaml`。编辑以包含新包。删除之前的 env,然后在 `conda env create -f env.yaml -n your_env` 中使用 YAML。或者,更谨慎地,使用不同的名称创建环境,并仅在验证旧名称有效后才将其删除。 (2认同)

eat*_*ish 12

我发现我首先使用conda只是因为它安装了二进制文件,而不是尝试pip如果包不在那里.例如,psycopg2在conda中比pip更容易安装.

https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/

Pip代表Pip Installs Packages,是Python官方认可的软件包管理器,最常用于安装Python Package Index(PyPI)上发布的软件包.pip和PyPI都受Python Packaging Authority(PyPA)的支配和支持.

简而言之,pip是Python包的通用管理器; conda是一个与语言无关的跨平台环境管理器.对于用户来说,最显着的区别可能就是:pip在任何环境中安装python包; conda在conda环境中安装任何软件包.如果您所做的只是在隔离环境中安装Python包,那么conda和pip + virtualenv大多可以互换,模块化依赖性处理和包可用性方面的差异.隔离环境我指的是conda-env或virtualenv,您可以在其中安装包而无需修改系统Python安装.

如果我们只专注于安装Python包,那么conda和pip会为不同的受众和不同的目的服务.如果你想在现有的系统Python安装中管理Python包,conda无法帮助你:按照设计,它只能在conda环境中安装包.如果您想要使用许多依赖于外部依赖项的Python包(NumPy,SciPy和Matplotlib是常见示例),在以有意义的方式跟踪这些依赖项时,pip无法帮助您:按设计,它管理Python包,只管理Python包.

Conda和pip不是竞争对手,而是专注于不同用户群和使用模式的工具.


Sco*_*les 5

这就是我所做的:

  1. 激活您的 conda 虚拟环境
  2. 使用 pip 安装到你的虚拟环境中
  3. 如果您遇到任何兼容性问题,请使用 conda

我最近遇到了这个,当 numpy / matplotlib 吓坏了,我使用 conda 构建来解决这个问题。