我在使用电脑时多少有些洁癖,因此希望有一套配置方案能够较为干净的管理我 Python 开发环境的解决方案。经过调研之后,目前个人使用的是 pyenv + venv 这一套方案。
简而言之,pyenv和venv分别负责两个层面的环境管理:
pyenv:管理不同的 Python 解释器版本;venv:为每个项目创建独立的虚拟环境。
这样做的好处是,全局环境尽量干净,项目依赖只安装在项目自己的虚拟环境中,不同项目之间的依赖不会互相污染。例如项目A主做科学研究,项目B主做网络应用开发,就可以通过 pyenv 分别安装和切换。其中每个项目内部的第三方包,由各自的 venv 独立维护。
我的目标大概就是如此,下面再简单记录一下如何创建并管理一个新的虚拟环境。
环境安装
对于pyenv包,可通过 homebrew 下载:
bash
1brew install pyenv确认已安装版本:
bash
1pyenv version这里我想先将全局环境设置为目前的 latest 版本3.14.3,那么需要先通过 pyenv 安装对应python解释器:
bash
1pyenv install 3.14.3在任意位置查询当前全局 pyenv 管理版本情况:
text
1╭─palemoons@MacBookPro ~
2╰─➤ pyenv versions
3 system
4 3.13.7
5* 3.14.2 (set by /Users/palemoons/.python-version)
6 3.14.3设置为3.14.3,确认全局版本已更换:
bash
1pyenv global 3.14.3可以看到现在全局的解释器路径已经变成由 pyenv 管理:
bash
1╭─palemoons@MacBookPro ~
2╰─➤ which python
3/Users/palemoons/.pyenv/shims/python项目创建
新建文件夹后进入该目录,接着创建一个新的虚拟环境 venv。若不特意指定解释器版本,则会默认使用全局解释器版本(例如我设置的3.14.3);若想使用特定版本,应当使用python local 3.x.x进行设置:
bash
1python -m venv .venv激活虚拟环境:
bash
1source .venv/bin/activate根据requirements.txt进行依赖安装:
bash
1pip install -r requirements.txt记录当前依赖情况:
bash
1pip freeze > requirements.txt