一、 Vscode 配置 poetry 虛擬環境的方法
方法一:
1. 找到虛擬環境存放路徑
windows下,在文件管理器地址欄輸入:
%userprofile%\AppData\Local\pypoetry\Cache\virtualenvs
找到虛擬環境存放路徑 C:\Users\XXX\AppData\Local\pypoetry\Cache\virtualenvs。
2.在獲取了虛擬環境路徑的情況下,我們可以編輯包含VsCode設置的json文件settings.json,並將其分配到一個新的字段,稱爲 "python.venvPath"。需要注意的是,路徑中的反斜槓"\"需要用雙反斜槓"\"替換。
windows:
{ “python.venvPath”:”C:\\Users\\XXX\\AppData\\Local\\pypoetry\\Cache\\virtualenvs” }
ubuntu:
{
“python.venvPath”:”~/.cache/pypoetry/virtualenvs/”
}
3.vscode 即可識別到虛擬環境的信息。
方法二:
1. 在使用poetry創建第一個項目之前,建議先對其進行配置,這樣就可以在項目目錄中的.venv文件夾中創建虛擬環境。
當你使用VsCode或Pycharm這類集成開發環境時就會變得非常方便,因爲它們可以立即識別並選擇正確的解釋器。
poetry configsettings.virtualenvs.in-project true
注意:你只需設置一次配置,設置結果將在全局環境保留。
poetry config virtualenvs.create false --local
在部署時先使用這個命令可以使所有的包安裝到系統中,而不是虛擬環境裏。
2.使用 poetry install 命令創建虛擬環境(確保當前目錄有 pyproject.toml 文件):
$ poetry install
這個命令會讀取 pyproject.toml 中的所有依賴(包括開發依賴)並安裝,如果不想安裝開發依賴,可以附加 –no-dev 選項。如果項目根目錄有 poetry.lock 文件,會安裝這個文件中列出的鎖定版本的依賴。如果執行 add/remove 命令的時候沒有檢測到虛擬環境,也會爲當前目錄自動創建虛擬環境。
項目文件夾下就會生成【.venv】文件夾。
3. vscode會立即識別到這個.venv的虛擬環境。
二、poetry 虛擬環境的設置
以上兩種方法配置poetry虛擬環境都可以被vscode識別,若我們需要多套虛擬環境的時候,就可以使用 poetry env 命令爲一個項目創建多個虛擬環境,下面是 poetry創建虛擬環境的介紹:
1.創建虛擬環境
(1)利用 virtualenvs.create=true 自動創建
當參數 virtualenvs.create=true 時,執行 poetry install 或 poetry add 時會檢測當前項目是否有虛擬環境,沒有就自動創建。
這裏一個問題就是:如果系統中既有Python2又有Python3,且項目既支持Python2也支持Python3,那poetry會優先使用Python2。
(2)poetry env
此命令以及子命令用於處理虛擬環境相關的操作。
如果需要創建的虛擬環境與當前系統默認的 Python 版本不一致,pypoetry 會自動去尋找不同於當前 Python 環境的 Python 解釋器位置,如果它找不到,那麼就只能手動指定解析器的絕對路徑。
在非 Windows 系統上,一般可以通過 which python
、which python3.7
一類的命令尋找到自己指定的 Python 版本的位置。
在 Windows 系統中,可以通過環境變量來尋找 Python 的解釋器位置。
poetry env use PYTHONPATH
使用 poetry env use PYTHONPATH
命令創建虛擬環境。
# in windows poetry env use C:\Users\XXX\AppData\Local\Programs\Python\Python38\python.exe
poetry env list
poetry 可以使用 poetry env use PYTHONPATH
爲一個項目創建多個不同的虛擬環境。
通過 poetry env list
可以查看當前項目所有的虛擬環境,增加 --full-path
可以看到虛擬環境的完整路徑,一般在配置 VSCode、PyCharm 的時候需要使用。
2. 激活虛擬環境
執行poetry的命令並不需要激活虛擬環境,因爲poetry會自動檢測當前虛擬環境,如果想在當前目錄對應的虛擬環境中執行命令,可以使用以下命令:
poetry run <你的命令> # 例如: poetry run python flask.py
poetry run 可以直接在當前虛擬環境中運行命令;poetry shell 可以在 shell 中激活當前虛擬環境,使用如下命令:
poetry shell
3. 刪除虛擬環境路徑
(1)可以直接刪除虛擬環境文件夾
(2)通過 poetry env -h 查看幫助文檔:
所以執行刪除虛擬環境時,指定對應的解析器版本即可。
poetry env remove python2
poetry env remove python3
三、最後:
使用 PyPi 鏡像
由於網絡原因,部分地區使用默認的 PyPi 源可能效果不佳。通過在 pyproject.toml
中配置源可以使 poetry 從指定的 PyPi 鏡像中拉取代碼。 配置方式參考 官方文檔 。注意 default = true
是必須的,否則 poetry [[tool.poetry.source]]
僅對部分環節有效, 在某些步驟 (如 resolve dependencies...
) poetry 仍然使用的是 pypi url, 仍然會從默認源拉取哈希值,而我們國內訪問不了或者連接超時, 就引起了報錯。 在 pyproject.toml 末尾添加下面的內容來設置自定義鏡像源:
[[tool.poetry.source]] name = "aliyun" default = true url = "http://mirrors.aliyun.com/pypi/simple/"