再见pip & conda!管理Python依赖关系的更好的选择:Poetry

在你的数据科学项目的开始阶段,使用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只安装软件包所需的依赖性。

 
 

你可能感兴趣的:(pip,conda,python)