Python - poetry(1)包管理利器的入門介紹


Python 虛擬環境詳解

https://www.cnblogs.com/poloyy/p/15266382.html

 

poetry 官方介紹

github:https://github.com/python-poetry/poetry

文檔(要🪜):https://python-poetry.org/docs/

 

poetry 民間介紹

  • 用 poetry 來同時管理 Python 庫和 Python 程序
  • poetry 可以管理 Python 依賴包、虛擬環境,同時可以用於 Python 工程打包和發布的一款第三方工具包
  • poetry 通過配置文件 pyproject.toml 來完成依賴管理、環境配置、基本信息配置等功能,相當於把 Python 項目中的 Pipfile、setup.py、setup.cfg、requirements.txt、MANIFEST.in 融合到一起
  • 通過 pyproject.toml 文件,不僅可以配置依賴包,還可以用於區分開發、測試、生產環境、配置源路徑

 

poetry 的優勢

  • 更強大的依賴處理功能
  • 易於打包和構建Python工程
  • 易於發布工具包
  • 結構化展示依賴關系

 

依賴處理

pipenv 在 安裝包的時候如果找不到它對應版本的依賴包會直接報錯

> pipenv install oslo.utils==1.4.0
Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0

  

但是 poetry 有強大的依賴處理能力,並不會報錯

> poetry add oslo.utils=1.4.0
  - Installing pytz (2018.3)
  - Installing netifaces (0.10.6)
  - Installing netaddr (0.7.19)
  - Installing oslo.i18n (2.1.0)
  - Installing iso8601 (0.1.12)
  - Installing six (1.11.0)
  - Installing babel (2.5.3)
  - Installing pbr (0.11.1)
  - Installing oslo.utils (1.4.0)
  • poetry 在遇到 pbr (>=0.6,!=0.7,<1.0) 這個限定條件時,它會嘗試去安裝最新的 pbr(0.11.1),同時會選擇 oslo.i18n==3.20.0
  • 但是,這時候發現 oslo.i18n 的版本和 pbr 最新版本沖突
  • 如果在 pipenv 中則會報錯(像上面一樣)
  • 但是 poetry 會嘗試找出解決方案,最后發現 oslo.i18n==2.1.0 是可以滿足所有包的相互依賴關系的要求
  • 最終,成功安裝依賴包

 

易於打包、構建 python 工程

  •  在工程開發過程中,項目遷移和工程化部署是無法繞開的問題
  •  如果需要把工程部署到生產環境服務器上,這時候就需要用到 Python 的打包和安裝功能
  •  在以往,會寫繁瑣的 setup.py、setup.cfg
  • 而在poetry中,一行命令就可以解決
> poetry build
​
Building poetry (1.0.0)
- Building sdist
- Built poetry-1.0.0.tar.gz
​
- Building wheel
- Built poetry-1.0.0-py2.py3-none-any.whl

 

易於發布工具包

  • 如果想要把工程發布到 PyPI 倉庫怎么辦? 
  • 在 poetry 中,只需要簡單配置一下 pyproject.toml,就可以實現一行命令發布工具包
> poetry publish
​
Publishing poetry (1.0.0) to PyPI
​
  - Uploading poetry-1.0.0.tar.gz 100%
  - Uploading poetry-1.0.0-py2.py3-none-any.whl 58%

 

結構化展示依賴關系 

  1. Python 是一個對第三方工具包依賴很強的一種編程語言
  2. 一個項目中會用到很多個不同的依賴包,不同包的依賴關系可能會很復雜
  3. poetry 可以實現結構化(tree 的形式)展示每個包的依賴關系,讓工程的依賴一目了然
> poetry show --tree
requests-toolbelt 0.8.0 A utility belt for advanced users...
└── requests <3.0.0,>=2.0.1
    ├── certifi >=2017.4.17
    ├── chardet >=3.0.2,<3.1.0
    ├── idna >=2.5,<2.7
    └── urllib3 <1.23,>=1.21.1> poetry show --latest
pendulum 2.0.4   1.4.5 Python datetimes made easy.
django   1.11.11 2.0.3 A high-level Python Web framework ...
requests 2.18.4  2.18.4 Python HTTP for Humans.

 

安裝

linux、mac 下安裝

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -

 

window 下安裝

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python -

 

使用官方 git repository 來安裝

python install-poetry.py --git https://github.com/python-poetry/poetry.git@master

 

卸載

python get-poetry.py --uninstall

 

完全刪除 poetry

python install-poetry.py --uninstall
POETRY_UNINSTALL=1 python install-poetry.py

 

更新到最新的穩定版本

poetry self update

 

更新到預發布版本

poetry self update --preview

 

通過 pipx 安裝、更新、卸載

安裝 pipx

pip install pipx

 

安裝、更新、卸載

pipx install poetry

pipx upgrade poetry

pipx uninstall poetry

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM