conda,pip,系统和个人软件的最佳实践管理

时间:2019-05-02 09:46:40

标签: python pip conda environment package-managers

在我的工作中,我需要混合使用C ++,Fortran和Python代码进行交互,在后一种情况下,主要通过Cython和SWIG进行交互。它们混合了广泛使用的库(通常可通过某些程序包管理系统获得),特定于我的领域但不是由我编写的(大多数不是打包在源tarball之外),以及我是开发人员的库。 >

很长一段时间以来,我们一直能够轻松应对Python 3,因此,我通常在~/local安装区中安装了已编译和基于Python2的软件, {1}},binlib等结构,并在我的lib/python2.*/site-packages .bashrcPATH,{{1 }} 环境变量。但是,尤其是随着Python 3的兴起,以及用于不兼容的ML软件包的增加,我不得不开始为某些项目运行virtualenv目录。这以及LD_LIBRARY_PATH之类的系统工具向Python 3的转换,意味着我的单一全局Python 2环境不再适合目标用途。

同时,我知道conda和condaforge现在被推向许多相关软件。因此,现在将有系统软件包和Python版本,可能的conda环境(对于特定的Python),pip软件包(是否在virtualenvs中),以及我的个人构建。要保持一致,这是很多工作,而且关于最佳实践的信息似乎也很少,特别是在多个项目之间共享一些代码,以及将非Python库与这些以Python为重点的工具混合在一起时。在每个项目的独立conda或virtualenv环境中安装一整套手动依赖项,将很难管理,并且在复制大型库方面很浪费,但另一方面,似乎至少需要单独的Python 2 / 3环境,其中可能包含更多特定于项目的虚拟环境。

因此,场景集很抱歉,但长度本质上很复杂。还有其他人正在努力解决这个问题吗?是否存在一种新兴的标准或最佳实践方法来管理系统,conda,pip和手动软件包依赖项的混合,以进行许多项目的开发,而不会造成不必要的重复?

PS。我理解答案可能在某种程度上是基于意见的,尽管好的答案可以证明并证明其建议。另一方面,这绝对是关于软件开发的,而不仅仅是软件管理。因此,我希望这对SO是一个适当的问题,因为我认为SX网络中没有更好的选择。

0 个答案:

没有答案
相关问题