# Pyenv + Poetry 相關指令 ## Anaconda work flow ```bash= conda create --name=<env name> python=<python version> conda activate <env name> pip install requirements.txt ``` - 以環境名稱做為虛擬環境的切換,當環境很多的時候,有時候會搞混哪個Project 要使用哪個環境。 - 套件相依性管理上,`pip uninstall <package>` 只**卸載主套件**而不會對相依套件洩載及管理,會造成環境髒且臃腫。 ## Pyenv 安裝 ### Window 使用**PowerShell** 安裝後,並**重啟PowerShell** 即可。 ```bash= Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1" ``` 可以透過以下指令確認是否安裝成功 ```bash= pyenv --version # 顯示pyenv 版本,確認是否安裝成功 pyenv install --list # 查看所以可安裝的Python 版本 pyenv install <version> # 安裝特定Python 版本 pyenv version # 查看目前使用的Python 版本與安裝路徑 ``` ## Poetry 安裝 ### macOS / Linux / WSL(Windows Subsystem for Linux) ```bash= curl -sSL https://install.python-poetry.org | python3 - ``` 記得設置環境變數 - `$HOME/.local/bin` for Unix 在`.zshrc` `.bashrc` `.bash_profile` 新增 ```bash export PATH=$PATH:$HOME/.local/bin ``` ### Windows ```bash= (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python - ``` - 手動添加`%APPDATA%\Python\Scripts` 至環境變數 ### 建議設定 ```bash= # 將虛擬環境綁定在專案上 poetry config virtualenvs.in-project true ``` ## Pyenv + Poetry Work Flow ```bash= git clone <git url> # 複製Project cd <project folder> # 進入Project 資料夾 pyenv install <Python version> # (Optional) 如果沒安裝過該Python 版本 poetry env use <Python version> # 於Project folder 中創建Python 虛擬環境 poetry install # 依照poetry.lock 安裝套件至虛擬環境 ``` ## Poetry 指令 ```bash= poetry init # 於專案資料夾初始化 poetry config --list # 查看config 內容 portry config <var> <value> # 設定config 中的var為value poetry env use/remove python # 建立/移除虛擬環境 可另外指定Python 版本 poetry shell # 啟動虛擬環境,需先移至專案目錄下,使用exit 即可退出 poetry add/remove <package> # 相當於pip install/uninstall,會更改pyproject.toml & poetry.lock 內容 # -G dev, --group dev 將只在開發環境使用的套件放置於dev-dependencies 區塊中 poetry lock # 若有手動更改pyproject.toml,需使用此指令同步更新poetry.lock 內容。 # 此指令僅會更新poetry.lock,並「不會安裝」套件至虛擬環境。 poetry install # 安裝套件至虛擬環境 poetry update # 更新全部可能可以更新的套件 poetry update <package> # 更新特定套件 poetry show --tree # 使用樹狀結構呈現poetry.lock 的套件內容 poetry show <package> --tree # 使用樹狀結構呈現poetry.lock 的特定套件內容 poetry export -f requirements.txt -o requirements.txt --without-hashes # 相當於pip freeze ``` 1. poetry env use python 預設會統一建立在特定目錄Cache中,建議將虛擬環境綁定在專案上。` ```bach poetry config virtualenvs.in-project true ``` 2. **`poetry ad`** 相當於 **`pip install`** 3. **`poetry.lock`** 相當於 **`requirements.txt`** ## Reference [Pyenv Github](https://github.com/pyenv-win/pyenv-win#installation) [Poetry](https://python-poetry.org/docs/) [Poetry 完全入門指南](https://blog.kyomind.tw/python-poetry/)