請(qǐng)問(wèn)做網(wǎng)站怎么賺錢(qián)排名優(yōu)化軟件點(diǎn)擊
文章目錄
- 前言
- 1. 為什么pip install poetry 會(huì)造成依賴沖突
- 1.1 全局環(huán)境依賴混淆:
- 1.2 工具和項(xiàng)目之間的沖突:
- 1.3 缺乏依賴隔離:
- 1.4 多出很多額外依賴:
- 2. 不推薦pipx安裝
- 3. poetry高級(jí)安裝
- 3.1 默認(rèn)安裝路徑
- 3.2自定義安裝
- 4. 安裝poetry實(shí)戰(zhàn)
- 4.1 下載安裝腳本文件
- 4.2 通過(guò)腳本安裝poetry
- 4.3 配置環(huán)境變量
- 4.4 修改poetry下載的三方包虛擬環(huán)境
- 4.5 在老項(xiàng)目中使用poetry
- 4.6 在新項(xiàng)目中使用poetry
前言
Poetry 是一個(gè)用于管理 Python 項(xiàng)目的依賴和構(gòu)建過(guò)程的工具。它簡(jiǎn)化了包管理和虛擬環(huán)境的創(chuàng)建,讓開(kāi)發(fā)者更容易管理項(xiàng)目的依賴關(guān)系。
它的出現(xiàn)讓我們對(duì)依賴卸載更干凈。
1. 為什么pip install poetry 會(huì)造成依賴沖突
直接使用 pip install poetry
安裝 Poetry 可能會(huì)造成依賴沖突,原因主要是 pip
在全局環(huán)境中安裝包的方式可能導(dǎo)致多個(gè)項(xiàng)目或工具之間的依賴沖突。這些沖突通常發(fā)生在以下幾種情況下:
1.1 全局環(huán)境依賴混淆:
pip install poetry
會(huì)將 Poetry 及其依賴項(xiàng)安裝到 Python 的全局環(huán)境中。如果全局環(huán)境中已經(jīng)存在某些依賴項(xiàng),并且它們的版本與 Poetry 依賴的版本不同,安裝可能會(huì)覆蓋這些依賴項(xiàng),導(dǎo)致其他依賴同樣庫(kù)的工具或項(xiàng)目無(wú)法正常工作。- 例如,Poetry 依賴某個(gè)特定版本的
tomlkit
庫(kù),而系統(tǒng)中的某個(gè)項(xiàng)目依賴不同版本的tomlkit
。安裝 Poetry 后,tomlkit
版本被改變,系統(tǒng)中的其他項(xiàng)目可能因此失敗。
1.2 工具和項(xiàng)目之間的沖突:
- 當(dāng)你在全局環(huán)境中安裝多個(gè)工具(例如,Poetry 和另一個(gè) Python 工具),這些工具可能依賴于同一個(gè)庫(kù)但要求不同版本。
pip
在安裝時(shí)并不會(huì)為每個(gè)工具創(chuàng)建獨(dú)立的環(huán)境,所以這會(huì)導(dǎo)致一個(gè)工具的依賴被另一個(gè)工具的依賴覆蓋,從而導(dǎo)致功能失效。
1.3 缺乏依賴隔離:
pip
默認(rèn)安裝到全局環(huán)境中,所有項(xiàng)目和工具共享同一個(gè)依賴池。這意味著不同項(xiàng)目或工具之間無(wú)法隔離它們的依賴,這會(huì)增加依賴沖突的風(fēng)險(xiǎn)。- 由于全局環(huán)境中所有包共享一個(gè)空間,因此多個(gè)包之間的版本需求可能不一致,造成某些包運(yùn)行失敗。
1.4 多出很多額外依賴:
下載之前:
?
下載之后:
2. 不推薦pipx安裝
這里有個(gè)機(jī)翻 https://www.tobyblogs.cn/PoetryCn/1/
3. poetry高級(jí)安裝
3.1 默認(rèn)安裝路徑
By default, Poetry is installed into a platform and user-specific directory:
~/Library/Application Support/pypoetry
on MacOS.~/.local/share/pypoetry
on Linux/Unix.%APPDATA%\pypoetry
on Windows.
3.2自定義安裝
如果您想更改此設(shè)置,可以定義 $POETRY_HOME 環(huán)境變量:
curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 -
如果要安裝預(yù)發(fā)行版本,可以通過(guò)將 --preview 選項(xiàng)傳遞給安裝腳本或使用 $POETRY_PREVIEW 環(huán)境變量來(lái)實(shí)現(xiàn):
curl -sSL https://install.python-poetry.org | python3 - --preview
curl -sSL https://install.python-poetry.org | POETRY_PREVIEW=1 python3 -
如果要安裝特定版本,可以使用 --version 選項(xiàng)或 $POETRY_VERSION 環(huán)境變量:
curl -sSL https://install.python-poetry.org | python3 - --version 1.2.0
curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.2.0 python3 -
4. 安裝poetry實(shí)戰(zhàn)
4.1 下載安裝腳本文件
windows+R 輸入powershell
然后在powershell中輸入:
Invoke-WebRequest -Uri https://install.python-poetry.org -OutFile install-poetry.py
在當(dāng)前路徑下可以看到install-poetry.py被生成
4.2 通過(guò)腳本安裝poetry
然后通過(guò)這個(gè)install-poetry.py安裝poetry
首先創(chuàng)建自定義文件夾
cd D:\Program Files:
D:
mkdir Poetry
然后切換到install-poetry.py所在的目錄,輸入以下命令
$env:POETRY_HOME = "D:/Program Files/Poetry"; python install-poetry.py
4.3 配置環(huán)境變量
把poetry安裝目錄下的bin添加到系統(tǒng)環(huán)境變量
PS D:\Program Files\Poetry\bin> Get-ChildItem | Format-List Name, Length, LastWriteTimeName : poetry.exe
Length : 0
LastWriteTime : 2024/8/18 14:09:11
檢查是否安裝成功
PS C:\Users\Administrator> poetry --version
Poetry (version 1.8.3)
PS C:\Users\Administrator>
4.4 修改poetry下載的三方包虛擬環(huán)境
查看poetry配置
PS C:\Users\Administrator> poetry config --list
cache-dir = "C:\\Users\\Administrator\\AppData\\Local\\pypoetry\\Cache"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}\\virtualenvs" # C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true
PS C:\Users\Administrator>
不想讓poetry下載的三方包在默認(rèn)路徑下,讓他下載到我們自定義的目錄。 virtualenvs.in-project
是 Poetry 的一個(gè)配置選項(xiàng),用于決定虛擬環(huán)境是否應(yīng)該放在項(xiàng)目目錄內(nèi)。
virtualenvs.in-project = true
: 如果這個(gè)選項(xiàng)設(shè)置為 true
,Poetry 會(huì)在項(xiàng)目的根目錄下創(chuàng)建一個(gè) .venv
文件夾,并在其中創(chuàng)建虛擬環(huán)境。這意味著每個(gè)項(xiàng)目都有一個(gè)獨(dú)立的虛擬環(huán)境位于項(xiàng)目目錄內(nèi),便于管理和隔離。
PS C:\Users\Administrator> poetry config virtualenvs.in-project true
PS C:\Users\Administrator> poetry config --list
cache-dir = "C:\\Users\\Administrator\\AppData\\Local\\pypoetry\\Cache"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}\\virtualenvs" # C:\Users\Administrator\AppData\Local\pypoetry\Cache\virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true
4.5 在老項(xiàng)目中使用poetry
cd myproject
poetry init
poetry init --no-interaction 不適用交互模型,生產(chǎn)的toml文件配置是默認(rèn)參數(shù)
4.6 在新項(xiàng)目中使用poetry
poetry new my_project