我有几个使用不同环境的Python项目。这些环境使用Conda进行管理,效果良好,允许在每个项目的生产和开发/测试中使用相同的环境。
Conda yml文件用于定义每个环境。
我想在开发过程中使用许多软件包,例如autoep8。这些不需要在生产环境中,因此不包含在yml文件中。
我如何安装autoep8和其他程序,以便它们能够在我加载到VS代码中的任何Python环境中工作?到目前为止,我不得不在切换环境时手动安装这些软件包。
默认程序包
在不违反环境隔离1的情况下管理此问题的一种方法是使用Conda的默认包功能。其想法是仅在开发系统上的.condarc
中定义默认包(如autopep8
(。conda env create
将尊重这些,并将它们添加到您创建的每个env中,因此您仍然可以保留一个只描述生产版本的基本内容的YAML。
请注意,有多个选项可用于存储此.condarc
的位置,Conda可以以嵌套方式加载设置。如果您的用户的所有环境都被分类为";"开发";,则定义默认包的合理位置将是CCD_ 5。另外还有一个--no-default-packages
标志,当你不需要它时,它可以用来禁用这种默认的软件包安装
[1]虽然有一些方法可以包括Conda环境之外的包(例如,通过PYTHONPATH
(,但这应被视为不合格,只能作为最后手段。Conda的设计是基于环境完全隔离的假设——违反这一假设可能导致未定义的行为