Pyenv&Poetry -BFFSð
#python #pyenv #environment #poetry

这是什么?

这是一种资源,主要是为我自己,这将使我能够回忆起Python Dev Environment Management的一种方法我不喜欢。它涵盖了两个不同但重要的python环境帮助者的使用:

  • PyEnv (Docs)
    • 使用路径垫片帮助您同时管理多个版本的Python。
  • 诗歌(Docs
    • 依赖性管理器在我的近似值中与节点世界中的yarnnpm等工具相似,并自动化某些任务(例如,创建和激活)。

为什么要做这个 /为什么要读这个?

  • 您发现,以干净,可重复和可预测的方式管理Python项目并不比其他语言的过程更简单(或更少的乐趣)。

如何使用 /阅读此信息?

这是技术指南不是深入的解释(尽管可能是即将到来的),因此我希望本指南主要用作启动您的记忆的一种方式,以如何以某种方式设置Python项目不喜欢。祝您好运ð


pre-reqsð«t

这些步骤将每台机器一次完成,如果您已经完成了这些步骤,则可以跳过本节。

安装Pyenv&A Modern Python版本ð

brew update
brew install pyenv
pyenv --version
# pyenv 2.3.15

pyenv install 3.10.7
# Wait for a bit for install to finish...

pyenv shell 3.10.7
python --version
# Python 3.10.7 🎉

可选:设置系统宽Python版本

pyenv global 3.10.7

安装诗歌

curl -sSL https://install.python-poetry.org | python3 -
poetry --version

可选:告诉诗歌在当前项目目录中创建虚拟环境

poetry config virtualenvs.in-project true
poetry config virtualenvs.in-project
# true

步骤ð§

  • 制作一个新的项目目录
cd Desktop/Code/personal/python
mkdir planet-express-api
cd planet-express-api 
  • 为该项目目录设置Python版本
pyenv local 3.10.7
python --version 
# 3.10.7
cat .python-version
# 3.10.7

注意:此命令将创建一个pyenv在当前工作目录(您所处的文件夹)中寻找的文件,其内容将告诉Pyenv使用哪个Python版本。

  • 创建一个诗歌项目
# Leave off the -n flag if you wish to add precise data 
# to the pyproject.toml file poetry creates.
poetry init -n
ls | grep pyproject.toml
# pyproject.toml
  • 初始化并使用诗歌开始虚拟环境
poetry shell
# Creating virtualenv planet-express-api
# bash -c planet-express-api/.venv/bin/activate
  • 通过添加依赖项来对其进行测试
# Add a dependency
poetry add pendulum 

# Start a Python REPL
python 

# Use the dependency
import pendulum
now = pendulum.now("Europe/Paris")
now.to_iso8601_string()
# '2023-05-27T19:40:17.452958+02:00'
# Use `ctrl + d` to exit the REPL 
  • 停止使用虚拟环境
# Exit the virtual environment
deactivate

# Start a Python REPL
python

# Validate the dependency is not available
import pendulum
ModuleNotFoundError: No module named 'pendulum' 

注意:要返回虚拟环境,只需再次使用poetry shell


概括

在本文中,您使用了Pyenv和诗歌一起在所需的Python(pyenv)中创建一个项目,其依赖性和虚拟环境由单个强大的工具(poetry Cheers ð»