Aar*_*ock 9 python numpy pip conda
我对conda install&之间的区别有一个合理的理解pip install; 如何pip只安装python包并conda可以安装非python二进制文件.但是,这两者之间存在一些重叠.这让我想问:
对于是否使用conda或pip两者都提供包装有什么经验法则?
例如,TensorFlow两个存储库都可以使用,但是来自tensorflow文档:
在Anaconda中,我们建议使用
pip install命令安装TensorFlow ,而不是使用conda install命令.
但是,有许多重叠的其他包一样numpy,scipy等等.
但是,此Stackoverflow答案表明conda install应该是默认值,并且pip只应在包不可用时使用conda.即使对于TensorFlow其他仅限python的包,这是真的吗?
MSe*_*ert 11
Tensorflow维护者实际上在PyPI上发布了TensorFlow的轮子,这就是为什么它是推荐的官方方式.这些conda包由Anaconda员工和/或社区创建.这并不意味着conda包是坏的,它只是意味着TensorFlow维护者不参与(官方).基本上他们只是说:"如果你在使用pipTensorFlow 安装它时遇到困难,开发人员会尽力帮助你.但是我们没有正式支持这些conda包,所以如果conda包出现问题你需要问conda-package维护者你被警告了."
在更一般的情况下:
对于仅限Python的包,您应该始终使用conda install.可能有例外,例如,如果根本没有conda-package或conda包已过期(并且没有人发布该软件包的新版本)并且您确实需要该软件包/版本.
然而,对于需要编译的包(例如C-Extensions等)而言则不同.这是不同的,因为pip你可以安装一个包:
虽然康达只提供了
对于已编译的包,您必须小心二进制兼容性.这意味着一个包是针对另一个库的特定二进制接口编译的 - 这可能取决于库的版本或编译标志等.
使用conda,您必须按原样使用包,这意味着您必须假设包是二进制兼容的.如果它们不是它将无法工作(段错误或链接错误或其他).
如果您使用pip并可以选择安装哪个轮(如果有),或者根据计算机上的可用库进行编译.这意味着你不太可能获得二进制不兼容性.如果你从不同的conda频道安装conda包,那就是(或者是)一个大问题.因为它们可能只是二元不兼容(例如conda-forge和anaconda-channel有或有一些问题).
但是,它应该根据具体情况来决定.我的tensorflowconda环境没有问题,我从通道安装了所有软件包conda-forge,包括tensorflow.但是我听说有几个人在混合 conda-forge和anaconda频道环境中遇到张量流问题.例如,主通道中的NumPy和来自conda-forge通道的TensorFlow可能只是二进制不兼容.
我的经验法则是:
conda install从一个且只有一个通道(如果可能的主要蟒蛇频道).您询问了为何无法从PyPI安装软件包conda.我不知道确切的原因,但pip主要是提供包,你必须自己安装.使用conda,您将获得一个已经编译并安装的软件包,只需"复制"而无需安装.这要求软件包安装在不同的操作系统(Mac,Windows,Linux)和平台(32位,64位)上,针对不同的Python版本(2.7,3.5,3.6),可能针对不同的NumPy版本.这意味着conda必须提供多个包而不是一个.这需要资源(最终安装的软件包的空间和安装时间),这可能是不可用或不可行的.除此之外,除了你必须知道的关于包(编译,安装)的所有细节以使其工作之外,可能没有用于pypi包的转换器到conda配方.这只是我的猜测.
| 归档时间: | 
 | 
| 查看次数: | 1929 次 | 
| 最近记录: |