Tensorflow维护者实际上在PyPI上发布了TensorFlow的轮子,这就是为什么这是推荐的 官方
方式的原因。这些
conda程序包由Anaconda员工和/或社区创建。这并不意味着conda程序包不好,仅意味着TensorFlow维护者不参与(正式)。基本上,他们只是说:“如果您
pip在TensorFlow开发人员上安装时遇到困难,则会尝试为您提供帮助。但是我们并未正式支持这些
conda软件包,因此,如果conda软件包出现问题,您需要询问conda软件包的维护者你已经被警告了。”
在更一般的情况下:
对于仅Python的软件包,应始终使用
condainstall。可能会有例外,例如,如果根本没有conda软件包或conda软件包已过期(并且没有人发布该软件包的新版本),并且您确实需要该软件包/版本。
但是,对于需要编译的软件包(例如C-Extensions等)而言,情况有所不同。有所不同,因为
pip您可以通过以下方式安装软件包:
- 作为预编译轮
- 作为软件包,在计算机上编译
虽然conda只是提供了
- 编译的conda包
对于已编译的软件包,必须注意二进制兼容性。这意味着程序包是根据另一个库的特定二进制接口编译的-这可能取决于库的版本或编译标志等。
使用conda时,您必须按原样使用软件包,这意味着您必须假定软件包是二进制兼容的。如果不是,它将不起作用(段错误或链接错误等)。
如果您使用,
pip并且可以选择要安装的方向盘(如果有),或者根据计算机上的 可用
库进行编译。这意味着您不太可能遇到二进制不兼容的情况。如果您从不同的conda通道安装conda软件包,那将是(或曾经是)一个大问题。因为它们可能只是二进制不兼容的(例如,conda-
forge和anaconda-channel在那儿有或有一些问题)。
但是,应该根据具体情况决定。我的
tensorflowconda环境没有问题,在那里我安装了通道中的 所有 软件包
conda-forge,包括tensorflow。但是我听说有几个人在 混合
conda-forge和
anaconda通道环境中对张量流有麻烦。例如,来自主通道的NumPy和来自conda-
forge通道的TensorFlow可能只是二进制不兼容的。
我的经验法则是:
- 如果它是仅Python的软件包,则只需安装它(不太可能造成麻烦)。尽可能使用conda程序包,但使用pip不会造成很多麻烦。如果您使用pip来安装它,那么它就不会受到conda的管理,因此有可能它不会被识别为可用依赖项,因此您必须自己对其进行更新,但这就是所有区别。
- 如果它是一个已编译的程序包(例如C扩展或C库的包装等),则它将变得更加复杂。如果您想“小心”或有理由期望出现问题,请执行以下 *** 作:
- 如果您需要测试来自不同渠道和/或conda和pip的编译包,请始终创建一个新环境。丢弃混乱的conda环境很容易,但是修复您所依赖的环境会很烦人。
- 如果可能的话安装使用所有编译包
conda install
从 一个且只有一个 通道(如果可能的主要蟒蛇频道)。 - 如果不可能,请尝试将主要的anaconda通道编译包与来自其他通道的conda包混合使用。
- 如果这样不起作用,请尝试混合使用conda编译的软件包和pip编译的软件包(预编译的转轮或自编译的安装程序)。
您询问为什么不能使用PyPI安装软件包
conda。我不知道确切原因,但是
pip通常会提供该软件包,您必须自己安装。使用conda,您可以得到一个已经编译并安装的软件包,而无需安装即可“复制”。这就要求该软件包必须安装在不同的 *** 作系统(Mac,Windows,Linux)和平台(32位,64位)上,并针对不同的Python版本(2.7、3.5、3.6)以及可能针对不同的NumPy版本进行安装。这意味着conda必须提供多个软件包,而不仅仅是一个。这会占用可能不可用或不可行的资源(用于最终安装的软件包的空间和安装时间)。除此之外,除了您要了解的所有软件包(编译,安装)细节之外,可能没有将pypi软件包转换为conda配方的方法。不过那只是我的猜测。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)