由于conda和ros2的環(huán)境實在太容易沖突了。我真的不敢再使用conda,著實是有些搞不明白這解釋器之間的關(guān)系。
conda的卸載和ros2的安裝暫不贅述,下面著重來說如何在Ubuntu中使用poetry進行包管理及遇到的問題。
1 安裝poetry
由于在有寫入權(quán)限的限制,在Ubuntu中想直接安裝一個poetry實在是太困難了,下面介紹幾種安裝的情況。下面這幾個命令先別急著復制安裝,我使用的是最后一種。
1.0 官方下載方式
curl -sSL https://install.python-poetry.org | python3 -
1.1 本地用戶的臨時環(huán)境
pip install -i --user https://pypi.tuna.tsinghua.edu.cn/simple poetry
這個指令將會把poetry安裝到當前用戶的.local文件夾下,但是遺憾的是沒有添加環(huán)境變量,我們雖然可以成功安裝,但是卻不能夠使用它。
從理論上來講,如果我們將./local/bin下的路徑添加到終端的環(huán)境變量的話,那么我們應(yīng)該是可以使用poetry命令的。
1.2 sudo命令安裝——root用戶的臨時環(huán)境
可以看到,上面的方法中制定了‘--user’參數(shù)將包安裝到當前用戶,如果使用
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple poetry
來安裝的話,那么就會安裝到/root/.local下。但是也是沒有添加環(huán)境變量的。
所以我推薦下面的方法。雖然在你的電腦上直接安裝不一定就會有權(quán)限限制,但是如果是使用下面這種安裝方法那么幾乎是必然不會出問題的。畢竟我這前瘡百孔的環(huán)境都能裝(是的,雖然是前前天才重裝的系統(tǒng),但是已經(jīng)玩脫好幾次了)。
1.3 python -m 安裝
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple poetry
這樣之后應(yīng)該就可以使用poetry了,但是不是使用poetry,而是使用
python -m poetry
?如果每次都使用這個的話,難免會有些麻煩,這個時候我們就可以使用zsh的別名功能了。
要創(chuàng)建別名,請在終端中執(zhí)行以下命令:
alias mypt='python -m poetry'
這將創(chuàng)建一個名為mypt的別名,將其映射到python -m poetry命令。?但是這樣只能將別名應(yīng)用到當前終端,要想一直能用,要添加到./zshrc文件中。
要使用別名,請在終端中輸入別名名稱并按回車鍵。例如,要使用mypt別名來運行poetry,在終端中執(zhí)行以下命令:
mypt --version
這將顯示poetry的版本號。平常我們也可以使用別名來簡化經(jīng)常使用的命令,或者將復雜的命令映射到易于記憶的名稱。
?如果是在bash中的話,那么應(yīng)該也可以靠軟鏈接達到同樣的效果。?
2 使用poetry進行環(huán)境管理
2.1 poetry init
poetry init
是一個用于創(chuàng)建新Python項目的命令。它會在當前目錄中創(chuàng)建一個pyproject.toml
文件,該文件包含有關(guān)項目的元數(shù)據(jù)和依賴項的信息。pyproject.toml
是poetry項目的核心配置文件,它描述了項目如何構(gòu)建、測試和運行,并列出了項目所需的依賴項和版本約束條件。下面我們來進行嘗試,我在mmdetection的倉庫中進行嘗試。
可以看到,在初始化之后,這個工具會詢問一些信息。
Would you like to define your main dependencies interactively? (yes/no)
是poetry init
命令的一個提示,詢問是否想要交互式地定義項目的主要依賴項。
如果選擇回答“yes”,則poetry init
命令將向你詢問要添加的依賴項。你可以根據(jù)需要添加依賴項的名稱、版本范圍、Git URL或其他信息來添加。就像選擇yes之后的情況一樣,跟著走就行了。
如果您選擇回答“no”,則poetry init
命令將使用默認設(shè)置創(chuàng)建pyproject.toml
文件,并在其中包含一個空的依賴項列表。你可以待會兒使用poetry add
命令手動添加依賴項。
?最后,它會生成pyproject.toml文件。
?2.2 poetry install
用下面的命令把toml文件“變現(xiàn)”
poetry install
這將根據(jù) `pyproject.toml` 文件中指定的依賴項安裝所需的所有包,以及它們的依賴項。默認情況下,這將在一個名為 `.venv` 的虛擬環(huán)境中安裝依賴項。如果您需要將依賴項安裝到全局環(huán)境中,可以使用 `--no-virtualenv` 標志。
運行時首先會爆出位置,方便我以后刪了它。
Creating virtualenv mmdetrely-kp0XzG9G-py3.10 in /home/zhaocake/.cache/pypoetry/virtualenvs
如果你要更改虛擬環(huán)境的位置,可以使用 `--path` 標志指定自定義路徑,例如:
poetry install --path /path/to/custom/venv
這將在 `/path/to/custom/venv` 中創(chuàng)建虛擬環(huán)境并安裝依賴項。
2.3 poetry shell
使用這個命令激活虛擬環(huán)境
?使用shell退出虛擬環(huán)境。
而且很離譜的一點是,在下載包的時候,明明看見很多包都下載的是macosx的版本,但是竟然真的可以安裝和使用??赡躳oetry真的是一個很務(wù)實的包管理工具吧。
2.4 poetry add
首先,要理解這個命令的參數(shù),就要理解依賴項
在 Poetry 中,有三種類型的依賴項:
- 生產(chǎn)依賴項(默認類型):這些是您的項目所必需的依賴項,用于構(gòu)建和運行項目。
- 開發(fā)依賴項:這些是用于開發(fā)、測試和維護項目的依賴項,例如測試框架、文檔生成器等。開發(fā)依賴項不會被包含在項目構(gòu)建中,而是在開發(fā)過程中使用。
- 可選依賴項:這些是您的項目可以使用但不是必需的依賴項。例如,如果您的項目可以在不同的數(shù)據(jù)庫上運行,則可能存在多個數(shù)據(jù)庫適配器,其中一些是可選的。
該命令的語法為?
poetry add <package>[@<version>] [--dev] [--optional]
其中?<package>
?是要添加的依賴包的名稱,<version>
?是可選的版本號。如果沒有指定版本號,Poetry 將使用?^
?符號自動添加一個版本約束符號。
--dev
?標志表示將包添加到開發(fā)依賴項中,而不是默認的生產(chǎn)依賴項中。--optional
?標志表示將包添加到可選依賴項中。
并且因為在虛擬環(huán)境中沒有poetry,你需要先推出虛擬環(huán)境,再執(zhí)行命令。執(zhí)行命令后要重新使用poetry install!?
2.5 poetry update
如果不是使用上面的add修改包,而是直接編輯了toml文件的話,再運行install就會報錯了,這個時候要使用的命令是update.
其他
1 poetry換源
由于常規(guī)來說下載包速度確實挺慢,所以我們要換源。
依然是熟悉的清華鏡像,這個真的好用。
2 安裝pytorch
我知道很多看我文章的朋友是要碰pytorch的,別的不說,pytorch作為當前數(shù)一數(shù)二的深度學習框架,多多少少還是要在這里提一句。
poetry對pytorch的支持目前可并不友好。我的建議是先把虛擬環(huán)境創(chuàng)建下來,再把pytorch用pip安裝,雖然這樣對包的管理很不到位,但也不失為一種解決辦法。或者就使用其他的包管理工具也是不錯的。
這是一篇整理自issue的可能的pytorch的poetry安裝方式,并且我嘗試,有在云機器上成功,但是在本地似乎依然有下載一些莫名奇妙的東西的可能。
Poetry安裝pytorch || 整理自github項目Poetry下的issue_早上真好的博客-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-625638.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-625638.html
到了這里,關(guān)于07 Ubuntu中使用poetry工具管理python環(huán)境——巨詳細?。?!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!