在你的数据科学项目的开始阶段,使用pip或conda等依赖性管理工具可能就足够了。
然而,随着项目的扩大,依赖关系的数量也在增加。这可能会使项目的环境难以重现,并且在仅仅依靠pip或conda进行依赖性管理时难以有效地维护它。
此时 Poetry 应运而生,它是一个开源库,提供了一个强大的工具来创建和维护具有一致环境的Python项目。在这篇文章中,我们将深入探讨Poetry的优势,并强调它与pip和conda的主要区别。
安装的便利性
一键轻松安装过程,能够快速采用并将软件包集成到我们的代码库中,从而节省时间和精力。
Conda
Conda的安装格式对于不同的软件包是不一致的。例如,要安装polars,你需要运行:
conda install -c conda-forge polar
而要安装pandas,命令是:
conda install -c anaconda pandas
Pip
Pip对每个软件包都有一致的安装格式:
pip install package-name
Poetry
Poetry也都遵循相同的安装格式:
poetry add package-name
可用的packages
软件包选择空间大,使得找到最适合需求的特定软件包和版本更容易。
Conda
有些软件包,如 “snscrape”,不能通过conda安装。此外,某些版本,如Pandas 2.0,可能无法通过Conda安装。
虽然可以在conda的虚拟环境中使用pip来解决软件包的限制,但conda不能跟踪用pip安装的依赖关系。
$ conda list
# packages in environment at /Users/khuyentran/miniconda3/envs/test-conda:
#
# Name Version Build Channel
Pip
Pip可以安装来自Python Package Index (PyPI)和其他存储库的任何软件包。
Poetry
Poetry还可以安装来自Python Package Index (PyPI)和其他存储库的软件包。
依赖关系的数量
减少环境中的依赖性,可以简化开发过程。
Conda
Conda提供完全的环境隔离,同时管理Python软件包和系统级的依赖关系。与其他软件包管理器相比,这可能会导致软件包太大,在安装和分发时可能会消耗更多的存储空间。
$ conda install pandas
$ conda list
# packages in environment at /Users/khuyentran/miniconda3/envs/test-conda:
#
# Name Version Build Channel
blas 1.0 openblas
bottleneck 1.3.5 py311ha0d4635_0
bzip2 1.0.8 h620ffc9_4
ca-certificates 2023.05.30 hca03da5_0
libcxx 14.0.6 h848a8c0_0
libffi 3.4.4 hca03da5_0
libgfortran 5.0.0 11_3_0_hca03da5_28
libgfortran5 11.3.0 h009349e_28
libopenblas 0.3.21 h269037a_0
llvm-openmp 14.0.6 hc6e5704_0
ncurses 6.4 h313beb8_0
numexpr 2.8.4 py311h6dc990b_1
numpy 1.24.3 py311hb57d4eb_0
numpy-base 1.24.3 py311h1d85a46_0
openssl 3.0.8 h1a28f6b_0
pandas 1.5.3 py311h6956b77_0
pip 23.0.1 py311hca03da5_0
python 3.11.3 hb885b13_1
python-dateutil 2.8.2 pyhd3eb1b0_0
pytz 2022.7 py311hca03da5_0
readline 8.2 h1a28f6b_0
setuptools 67.8.0 py311hca03da5_0
six 1.16.0 pyhd3eb1b0_1
sqlite 3.41.2 h80987f9_0
tk 8.6.12 hb8d0fd4_0
tzdata 2023c h04d1e81_0
wheel 0.38.4 py311hca03da5_0
xz 5.4.2 h80987f9_0
zlib 1.2.13 h5a0b063_0
Pip
Pip只安装软件包