在这篇文章中,作者提出以下建议
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包
conda是Anaconda或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包。这些是由开发者和其他友好用户维护的非官方渠道
我们可以指定其他类似的频道:
pip搜索并从pypi下载
因此,如果您使用的是Python或迷你Python,则应使用Python。如果您无法从官方渠道找到特定的软件包,您可以尝试conda forge或bioconda。终于从pypi那里得到了
然而,如果你不使用Python,那么就坚持使用pip
对于高级用户,您可以从他们的源代码(如github、gitlab等)下载最新的库。但是有一个问题:
有些Python包是用纯Python编写的。在这种情况下,您应该没有问题将这些软件包安装到您的系统中
我们如何知道Python包是否需要特定的编译器?
人们可能不容易找到答案。但是,您可以通过以下方式(可能是顺序)找到答案:
查看源存储库中的登录页(或
README.nd
或README.txt
文件)。例如,如果您转到Pandas's source repository,它将显示它需要cython,因此安装将需要一个C编译器
查看源存储库中的
setup.py
。 例如,如果您转到numpy's setup.py,它需要一个C编译器对于已编译的C包,您可以导入一个包,查看它的位置,并检查包本身以查看它导入的内容。在某个时刻,您将读入已编译模块的导入(.so-extension on*nix)。可能有一种更简单的方法,但这可能取决于在包的导入序列中加载编译模块的位置
Fuzzymatcher可能无法通过Conda使用,或者只能使用过时的版本,或者只能使用与过时的依赖项集匹配的版本。然后你可能会得到一套过时的软件包。Pip可能有一个更新版本的fuzzymatcher,并且可能不太关心(不管是好是坏)您环境中各种其他软件包的版本。我不熟悉fuzzymatcher,所以我不能给你一个确切的原因:你必须问作者
请注意,在使用Conda安装必要的软件包时,该段的要点是,某些软件包需要(C)库(不需要编译的软件包,尽管它们取决于这些库),默认情况下可能不会安装在您的系统上。康达将为您安装这些;皮普不会
其他的答案已经解决了Conda如何更好地管理非Python依赖项的问题。至于为什么要使用Pip,在本例中并不复杂:当文章撰写时,
fuzzymatcher
包在Conda上不可用(2020年2月18日)。该方案的第一个也是唯一一个版本是2020年12月1日的uploaded on Conda Forge除非想要一个更旧的版本(<;0.0.5),现在可以只使用Conda。接下来,Conda Forge's Autotick Bot将自动提交请求,并在推送到PyPI时构建包的任何新版本
相关问题 更多 >
编程相关推荐