終於可以擺脫 Pipenv 這坑貨了
大家好,我是明哥。
之前在介紹一些管理 Python 虛擬環境的工具時,比如 pipenv,virtualenv 等,總有讀者留言,希望我整一期 poetry 的。
在接觸 poetry 之前,我以爲 pipenv 已經是我心目中最理想的虛擬環境工具,直到 19 年 看過 @李輝 的一篇文章 (http://greyli.com/do-not-use-pipenv/) 才讓我開始動搖,原來一直輕量使用的我,一直沒有感覺到 pipenv 的各種問題,咱也不知道經過這幾年的發展,pipenv 是否有所改進?不過我想對於曾經 "深受其害" 的用戶來說,可能早就投入了 poetry 的懷抱。
廢話不多說,直接上乾貨。
1. 安裝 poetry
poetry 提供多種安裝方式,個人推薦從以下 2 種方式中選擇:
方式一:(推薦)使用在線腳本進行安裝,是最爲推薦的安裝方式
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
方式二:(pip) 官方不建議這麼做,因爲有可能會造成依賴衝突,可以考慮用 pipx 或 pipsi
$ pip install --user poetry
安裝後,可以使用如下命令檢測是否可用
$ poetry --version
Poetry version 1.1.4
2. 創建項目
如果你是在一個已有的項目裏使用 Poetry,你只需要執行 poetry init 命令來創建一個 pyproject.toml 文件:
$ poetry init
而如果是新建 一個項目,可以使用這個命令
$ poetry new demo-priject
運行完後,在當前目錄下就會多一個 demo-project
的目錄,這個目錄下的文件結構如下
$ tree demo-priject
demo-priject
├── README.rst
├── demo_priject
│ └── __init__.py
├── pyproject.toml
└── tests
├── __init__.py
└── test_demo_priject.py
如果要把項目代碼放入到 src 目錄下,在創建項目時,可以加上 --src
參數。
3. 創建虛擬環境
使用 poetry install 命令創建虛擬環境(確保當前目錄有 pyproject.toml 文件):
$ poetry install
這個命令會讀取 pyproject.toml 中的所有依賴(包括開發依賴)並安裝,如果不想安裝開發依賴,可以附加 --no-dev 選項。如果項目根目錄有 poetry.lock 文件,會安裝這個文件中列出的鎖定版本的依賴。如果執行 add/remove 命令的時候沒有檢測到虛擬環境,也會爲當前目錄自動創建虛擬環境。
4. 使用虛擬環境
創建虛擬環境後,如果想要在虛擬環境下執行命令,比如去執行腳本,去使用 pip list 等等。
可以在項目目錄下,使用如下命令
$ poetry run <commands>
比如我查看該虛擬環境中安裝了哪些包
$ poetry run pip list
再比如我想在該虛擬環境下執行 app.py
$ poetry run python app.py
每次在虛擬環境下做點啥事,命令前面都要加上 poetry run
,有點太麻煩了。
這時可以使用下面這條命令,直接激活當前的虛擬環境
$ poetry shell
5. 包的管理
安裝包
$ poetry add <pkg>
添加 --dev 參數可以指定爲開發依賴
$ poetry add pytest --dev
查看所有安裝的依賴包
$ poetry show
加上 --tree
可以查看他們的依賴關係
$ poetry show --tree
加上 --outdated
可以查看可以更新的依賴
$ poetry show --outdated
如果要更新依賴可以執行這個命令
# 更新全部
$ poetry update
# 更新某個依賴
$ poetry update foo
想卸載某個包,用這個命令
$ poetry remove foo
6. 常用配置
Poetry 的配置存儲在單獨的文件中,比 Pipenv 設置環境變量的方式要方便一點。配置通過 poetry config 命令設置,比如下面的命令可以寫入 PyPI 的賬號密碼信息:
$ poetry config http-basic.pypi username password
下面的命令設置在項目內創建虛擬環境文件夾:
$ poetry config settings.virtualenvs.in-project true
另一個常用的配置是設置 PyPI 鏡像源,以使用豆瓣提供的 PyPI 鏡像源爲例,你需要在 pyproject.toml 文件里加入這部分內容:
[[tool.poetry.source]]
name = "douban"
url = "https://pypi.doubanio.com/simple/"
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/LgdtP7ndSa-ZwgeMxTtwLQ