Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 除非必要,如何避免使用conda forge软件包?_Python_Anaconda_Conda_Conda Forge - Fatal编程技术网

Python 除非必要,如何避免使用conda forge软件包?

Python 除非必要,如何避免使用conda forge软件包?,python,anaconda,conda,conda-forge,Python,Anaconda,Conda,Conda Forge,在从conda forge安装单个软件包时,我遇到了一个小问题,但很烦人。通常情况下,我会运行以下内容: conda安装-c conda forge软件包 这具有使用conda forge频繁更新其他包的效果:几乎总是ca证书、certifi和openssl;有时像python、numpy等主要软件包都来自conda forge。我怀疑这些更新不是绝对必要的;为了安装最新版本的somepackage,我需要python>=3.8,但当前的python是3.7;我可以使用conda forge,因

在从conda forge安装单个软件包时,我遇到了一个小问题,但很烦人。通常情况下,我会运行以下内容:

conda安装-c conda forge软件包

这具有使用conda forge频繁更新其他包的效果:几乎总是ca证书、certifi和openssl;有时像python、numpy等主要软件包都来自conda forge。我怀疑这些更新不是绝对必要的;为了安装最新版本的somepackage,我需要python>=3.8,但当前的python是3.7;我可以使用conda forge,因此我将从conda forge获得比默认版本更新的最新python

我想完成的是:安装somepackage的任何版本,不一定是最新的,同时尽可能少地从conda forge安装。特别是,如果在保留已安装的软件包和升级之间有选择的话,我总是想保留;如果在默认通道和conda forge之间有选择的话,我总是希望使用默认通道,即使这些选择会导致我尝试安装的新软件包的旧版本和/或它们的新依赖项,但如果它们导致无法安装,我也不希望使用默认通道

我如何做到这一点

我如何告诉conda不要升级依赖项 可以使用conda安装-冻结已安装的软件包。。。防止conda更新已安装的软件包。然而,这似乎并没有阻止在conda的config的aggressive_update_packages键下更新包。默认软件包有ca证书、certifi和openssl。请参阅。您可以使用

conda config --show aggressive_update_packages
安装任何版本的somepackage,但不一定是最新版本,同时尽可能少地从conda forge安装 根据,可以通过将conda forge通道放在通道列表的底部并在conda的配置中设置channel_priority:strict来实现这一点

对于严格的通道优先级,如果具有相同名称的包出现在较高优先级的通道中,则不考虑较低优先级通道中的包

管理频道页面建议将strict设置为默认值,并指示conda 5.x将strict设置为频道优先级的默认值

可以将以下内容写入其~/.condarc文件:

但是,如果在conda config中使用-c/-channel选项,则该通道将优先于任何其他通道。因此,如果一个人像上面那样设置他们的conda配置,但是使用conda安装-c conda forge numpy,那么numpy将从conda forge安装

我如何告诉conda不要升级依赖项 可以使用conda安装-冻结已安装的软件包。。。防止conda更新已安装的软件包。然而,这似乎并没有阻止在conda的config的aggressive_update_packages键下更新包。默认软件包有ca证书、certifi和openssl。请参阅。您可以使用

conda config --show aggressive_update_packages
安装任何版本的somepackage,但不一定是最新版本,同时尽可能少地从conda forge安装 根据,可以通过将conda forge通道放在通道列表的底部并在conda的配置中设置channel_priority:strict来实现这一点

对于严格的通道优先级,如果具有相同名称的包出现在较高优先级的通道中,则不考虑较低优先级通道中的包

管理频道页面建议将strict设置为默认值,并指示conda 5.x将strict设置为频道优先级的默认值

可以将以下内容写入其~/.condarc文件:


但是,如果在conda config中使用-c/-channel选项,则该通道将优先于任何其他通道。因此,如果您将conda配置设置为如上所述,但使用conda install-c conda forge numpy,那么numpy将从conda forge安装。

通常,我赞同以下结论:定义合理的全局通道优先级,并尝试避免通过-channel |-c参数使用特殊规范

有一些额外的选择可能值得指出:

指定特定包应来自具有

 conda install conda-forge::somepackage
这不会改变通道优先级

在install命令中明确列出通道优先级:

这将默认设置放在首位

通过YAML文件定义和操作环境。YAML包含一个通道部分,因此可以明确说明优先级。如果您需要环境中的新包,可以将其添加到YAML(比如env.YAML),并且可以使用

 conda env update -f env.yaml

一般来说,我赞同中的结论:定义一个合理的全局通道优先级,并尽量避免使用临时的Specifiat 离子通过-channel |-c参数

有一些额外的选择可能值得指出:

指定特定包应来自具有

 conda install conda-forge::somepackage
这不会改变通道优先级

在install命令中明确列出通道优先级:

这将默认设置放在首位

通过YAML文件定义和操作环境。YAML包含一个通道部分,因此可以明确说明优先级。如果您需要环境中的新包,可以将其添加到YAML(比如env.YAML),并且可以使用

 conda env update -f env.yaml

这可能对@jacub很有帮助,但我认为它似乎并不能完全解决这个问题。1.当使用带-c的通道而不是conda config-append通道等时,它在列表中的位置是什么?二,。通道优先级如何允许使用来自较低优先级通道的较高版本包,但仅当需要安装请求的软件包而不是请求的软件的最新版本时package@jacub也许对我来说最好的办法是先使用channel_priority=strict和默认通道,尽管有时可能会导致安装失败,否则可能会成功。另一个问题是,我如何告诉conda不要升级依赖项而不管通道这可能会有帮助@jacub这很有帮助,但我认为这似乎并不能完全解决这个问题。1.当使用带-c的通道而不是conda config-append通道等时,它在列表中的位置是什么?二,。通道优先级如何允许使用来自较低优先级通道的较高版本包,但仅当需要安装请求的软件包而不是请求的软件的最新版本时package@jacub也许对我来说最好的办法是先使用channel_priority=strict和默认通道,尽管有时可能会导致安装失败,否则可能会成功。另一个问题是,我如何告诉conda不升级依赖项,而不管通道是什么