請問做網(wǎng)站怎么賺錢排名優(yōu)化軟件點擊
文章目錄
- 前言
- 1. 為什么pip install poetry 會造成依賴沖突
- 1.1 全局環(huán)境依賴混淆:
- 1.2 工具和項目之間的沖突:
- 1.3 缺乏依賴隔離:
- 1.4 多出很多額外依賴:
- 2. 不推薦pipx安裝
- 3. poetry高級安裝
- 3.1 默認安裝路徑
- 3.2自定義安裝
- 4. 安裝poetry實戰(zhàn)
- 4.1 下載安裝腳本文件
- 4.2 通過腳本安裝poetry
- 4.3 配置環(huán)境變量
- 4.4 修改poetry下載的三方包虛擬環(huán)境
- 4.5 在老項目中使用poetry
- 4.6 在新項目中使用poetry
前言
Poetry 是一個用于管理 Python 項目的依賴和構建過程的工具。它簡化了包管理和虛擬環(huán)境的創(chuàng)建,讓開發(fā)者更容易管理項目的依賴關系。
它的出現(xiàn)讓我們對依賴卸載更干凈。
1. 為什么pip install poetry 會造成依賴沖突
直接使用 pip install poetry
安裝 Poetry 可能會造成依賴沖突,原因主要是 pip
在全局環(huán)境中安裝包的方式可能導致多個項目或工具之間的依賴沖突。這些沖突通常發(fā)生在以下幾種情況下:
1.1 全局環(huán)境依賴混淆:
pip install poetry
會將 Poetry 及其依賴項安裝到 Python 的全局環(huán)境中。如果全局環(huán)境中已經(jīng)存在某些依賴項,并且它們的版本與 Poetry 依賴的版本不同,安裝可能會覆蓋這些依賴項,導致其他依賴同樣庫的工具或項目無法正常工作。- 例如,Poetry 依賴某個特定版本的
tomlkit
庫,而系統(tǒng)中的某個項目依賴不同版本的tomlkit
。安裝 Poetry 后,tomlkit
版本被改變,系統(tǒng)中的其他項目可能因此失敗。
1.2 工具和項目之間的沖突:
- 當你在全局環(huán)境中安裝多個工具(例如,Poetry 和另一個 Python 工具),這些工具可能依賴于同一個庫但要求不同版本。
pip
在安裝時并不會為每個工具創(chuàng)建獨立的環(huán)境,所以這會導致一個工具的依賴被另一個工具的依賴覆蓋,從而導致功能失效。
1.3 缺乏依賴隔離:
pip
默認安裝到全局環(huán)境中,所有項目和工具共享同一個依賴池。這意味著不同項目或工具之間無法隔離它們的依賴,這會增加依賴沖突的風險。- 由于全局環(huán)境中所有包共享一個空間,因此多個包之間的版本需求可能不一致,造成某些包運行失敗。
1.4 多出很多額外依賴:
下載之前:
?
下載之后:
2. 不推薦pipx安裝
這里有個機翻 https://www.tobyblogs.cn/PoetryCn/1/
3. poetry高級安裝
3.1 默認安裝路徑
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自定義安裝
如果您想更改此設置,可以定義 $POETRY_HOME 環(huán)境變量:
curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 -
如果要安裝預發(fā)行版本,可以通過將 --preview 選項傳遞給安裝腳本或使用 $POETRY_PREVIEW 環(huán)境變量來實現(xiàn):
curl -sSL https://install.python-poetry.org | python3 - --preview
curl -sSL https://install.python-poetry.org | POETRY_PREVIEW=1 python3 -
如果要安裝特定版本,可以使用 --version 選項或 $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實戰(zhàn)
4.1 下載安裝腳本文件
windows+R 輸入powershell
然后在powershell中輸入:
Invoke-WebRequest -Uri https://install.python-poetry.org -OutFile install-poetry.py
在當前路徑下可以看到install-poetry.py被生成
4.2 通過腳本安裝poetry
然后通過這個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下載的三方包在默認路徑下,讓他下載到我們自定義的目錄。 virtualenvs.in-project
是 Poetry 的一個配置選項,用于決定虛擬環(huán)境是否應該放在項目目錄內。
virtualenvs.in-project = true
: 如果這個選項設置為 true
,Poetry 會在項目的根目錄下創(chuàng)建一個 .venv
文件夾,并在其中創(chuàng)建虛擬環(huán)境。這意味著每個項目都有一個獨立的虛擬環(huán)境位于項目目錄內,便于管理和隔離。
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 在老項目中使用poetry
cd myproject
poetry init
poetry init --no-interaction 不適用交互模型,生產(chǎn)的toml文件配置是默認參數(shù)
4.6 在新項目中使用poetry
poetry new my_project