为什么同时使用 conda 和 pip?
Why use both conda and pip?
在此article,作者建议如下
To install fuzzy matcher, I found it easier to conda install the
dependencies (pandas, metaphone, fuzzywuzzy) then use pip to install
fuzzymatcher. Given the computational burden of these algorithms you
will want to use the compiled c components as much as possible and
conda made that easiest for me.
有人可以解释为什么他建议使用 Conda
安装依赖项,然后使用 pip
安装实际的软件包,即 fuzzymatcher
?为什么我们不能对两者都使用 Conda
?另外,我们怎么知道我们是否按照他的建议使用编译的C包?
对于已编译的 C 包,您可以导入一个包,查看它的位置,然后检查包本身以查看它导入了什么。在某些时候,您会读入已编译模块的导入(*nix 上的 .so 扩展名)。可能有更简单的方法,但这可能取决于加载已编译模块的包的导入顺序中的哪个点。
Fuzzymatcher 可能无法通过 Conda 获得,或者只有一个过时的版本,或者只有一个与一组过时的依赖项相匹配的版本。那么您可能会得到一组过时的软件包。 Pip 可能有更新版本的 fuzzymatcher,并且可能不太关心(无论好坏)您环境中的各种其他包的版本。我对fuzzymatcher不熟悉,所以我不能给你一个确切的原因:你得问作者。
请注意,关于使用 Conda 安装必要的软件包,该段的要点是某些软件包需要 (C) 库 (不是必需的编译软件包,尽管这些将取决于在这些库上),默认情况下可能不会安装在您的系统上。 Conda 将为您安装这些;点子不会。
conda is the package manager (installer and uninstaller) for Anaconda or Miniconda.
pip 是 Python.
的包管理器
根据您的系统环境和其他设置,pip 和 conda 可能会安装到同一个 Python 安装文件夹($PYTHONPATH/Lib/site-packages
或 %PYTHONPATH%\Lib\site-packages
)。因此,conda 和 pip 通常可以很好地协同工作。
但是,conda 和 pip 从不同的渠道或网站获取它们的 Python 包。
conda从官方渠道搜索下载:https://repo.anaconda.com/pkgs/
此软件包由 Anaconda 正式支持,因此在该频道中维护。
但是,我们可能无法找到所有 Python 个包或比官方渠道更新版本的包。这就是为什么有时我们可能会从“conda-forge”或“bioconda”安装 Python 包。这些是由开发者和其他友好用户维护的非官方渠道。
我们可以像这样指定其他频道:
conda install <package1> --channel conda-forge
conda install <package2> --channel bioconda
pip 搜索并从 pypi
下载
- 我们应该能够在那里下载每个公开可用的 Python 包。
- 这些包由开发人员和友好用户生成并上传。
- 每个包中的依赖设置可能没有经过全面测试或验证。
- 这些软件包可能不支持 Python 的旧版本或新版本。
因此,如果您使用的是 Anaconda 或 Miniconda,则应该使用 conda。如果您无法从官方渠道找到特定的软件包,您可以尝试使用 conda-forge 或 bioconda。终于从pypi搞定了。
但是,如果您不使用 Anaconda,请坚持使用 pip。
对于高级用户,您可以从其源代码(例如 github、gitlab 等)下载最新的库但是有一个问题:
一些 Python 包是用纯 Python 编写的。在这种情况下,将这些软件包安装到系统中应该没有问题。
一些Python包是用C、C++、Go等编写的。在这种情况下,你需要
- 适用于您的系统和 Python 环境(32 位或 64 位版本)的受支持编译器。
- Python 头文件、可链接 Python 库和特定于您安装的 Python 版本的档案。 Anaconda 在其安装中包含这些。
我们如何知道 Python 包是否需要特定的编译器?
人们可能不容易发现。但是,您可以通过以下方式(可能是命令)找到:
查看源存储库中的登录页面(或 README.nd
或 README.txt
文件)。
例如,如果你去Pandas's source repository,它表明它需要cython,因此安装将需要一个C编译器。
查看源代码库中的setup.py
。
例如,如果你去 numpy's setup.py,它需要一个 C 编译器。
查看使用需要编译的编程语言(如C、C++、Go等)编写的源代码量,例如numpy库使用35.7%的C编写, 1.0% 的 C++ 等。但是,这只是一个指南,因为这些源代码可能只是测试例程。
- 在 Whosebug 中提问。
其他答案解决了 Conda 如何更好地管理非 Python 依赖项。至于为什么要使用 Pip,在这种情况下并不复杂:撰写本文时 (2020 年 2 月 18 日),fuzzymatcher
软件包在 Conda 上不可用。该软件包的第一个也是唯一一个版本是 uploaded on Conda Forge,发布于 2020 年 12 月 1 日。
除非想要旧版本 (< 0.0.5),否则 现在可以只使用 Conda。展望未来,Conda Forge's Autotick Bot 将在将包推送到 PyPI 时自动提交拉取请求并构建包的任何新版本。
在此article,作者建议如下
To install fuzzy matcher, I found it easier to conda install the dependencies (pandas, metaphone, fuzzywuzzy) then use pip to install fuzzymatcher. Given the computational burden of these algorithms you will want to use the compiled c components as much as possible and conda made that easiest for me.
有人可以解释为什么他建议使用 Conda
安装依赖项,然后使用 pip
安装实际的软件包,即 fuzzymatcher
?为什么我们不能对两者都使用 Conda
?另外,我们怎么知道我们是否按照他的建议使用编译的C包?
对于已编译的 C 包,您可以导入一个包,查看它的位置,然后检查包本身以查看它导入了什么。在某些时候,您会读入已编译模块的导入(*nix 上的 .so 扩展名)。可能有更简单的方法,但这可能取决于加载已编译模块的包的导入顺序中的哪个点。
Fuzzymatcher 可能无法通过 Conda 获得,或者只有一个过时的版本,或者只有一个与一组过时的依赖项相匹配的版本。那么您可能会得到一组过时的软件包。 Pip 可能有更新版本的 fuzzymatcher,并且可能不太关心(无论好坏)您环境中的各种其他包的版本。我对fuzzymatcher不熟悉,所以我不能给你一个确切的原因:你得问作者。
请注意,关于使用 Conda 安装必要的软件包,该段的要点是某些软件包需要 (C) 库 (不是必需的编译软件包,尽管这些将取决于在这些库上),默认情况下可能不会安装在您的系统上。 Conda 将为您安装这些;点子不会。
conda is the package manager (installer and uninstaller) for Anaconda or Miniconda.
pip 是 Python.
的包管理器根据您的系统环境和其他设置,pip 和 conda 可能会安装到同一个 Python 安装文件夹($PYTHONPATH/Lib/site-packages
或 %PYTHONPATH%\Lib\site-packages
)。因此,conda 和 pip 通常可以很好地协同工作。
但是,conda 和 pip 从不同的渠道或网站获取它们的 Python 包。
conda从官方渠道搜索下载:https://repo.anaconda.com/pkgs/
此软件包由 Anaconda 正式支持,因此在该频道中维护。
但是,我们可能无法找到所有 Python 个包或比官方渠道更新版本的包。这就是为什么有时我们可能会从“conda-forge”或“bioconda”安装 Python 包。这些是由开发者和其他友好用户维护的非官方渠道。
我们可以像这样指定其他频道:
conda install <package1> --channel conda-forge conda install <package2> --channel bioconda
pip 搜索并从 pypi
下载- 我们应该能够在那里下载每个公开可用的 Python 包。
- 这些包由开发人员和友好用户生成并上传。
- 每个包中的依赖设置可能没有经过全面测试或验证。
- 这些软件包可能不支持 Python 的旧版本或新版本。
因此,如果您使用的是 Anaconda 或 Miniconda,则应该使用 conda。如果您无法从官方渠道找到特定的软件包,您可以尝试使用 conda-forge 或 bioconda。终于从pypi搞定了。
但是,如果您不使用 Anaconda,请坚持使用 pip。
对于高级用户,您可以从其源代码(例如 github、gitlab 等)下载最新的库但是有一个问题:
一些 Python 包是用纯 Python 编写的。在这种情况下,将这些软件包安装到系统中应该没有问题。
一些Python包是用C、C++、Go等编写的。在这种情况下,你需要
- 适用于您的系统和 Python 环境(32 位或 64 位版本)的受支持编译器。
- Python 头文件、可链接 Python 库和特定于您安装的 Python 版本的档案。 Anaconda 在其安装中包含这些。
我们如何知道 Python 包是否需要特定的编译器?
人们可能不容易发现。但是,您可以通过以下方式(可能是命令)找到:
查看源存储库中的登录页面(或
README.nd
或README.txt
文件)。
例如,如果你去Pandas's source repository,它表明它需要cython,因此安装将需要一个C编译器。查看源代码库中的
setup.py
。 例如,如果你去 numpy's setup.py,它需要一个 C 编译器。查看使用需要编译的编程语言(如C、C++、Go等)编写的源代码量,例如numpy库使用35.7%的C编写, 1.0% 的 C++ 等。但是,这只是一个指南,因为这些源代码可能只是测试例程。
- 在 Whosebug 中提问。
其他答案解决了 Conda 如何更好地管理非 Python 依赖项。至于为什么要使用 Pip,在这种情况下并不复杂:撰写本文时 (2020 年 2 月 18 日),fuzzymatcher
软件包在 Conda 上不可用。该软件包的第一个也是唯一一个版本是 uploaded on Conda Forge,发布于 2020 年 12 月 1 日。
除非想要旧版本 (< 0.0.5),否则 现在可以只使用 Conda。展望未来,Conda Forge's Autotick Bot 将在将包推送到 PyPI 时自动提交拉取请求并构建包的任何新版本。