Simple Python Version Management: pyenv
pyenv是什么?
pyenv安装
| Bash |
|---|
| # 安装环境依赖以供pyenv编译安装python时使用
$ brew install openssl readline sqlite3 xz zlib tcl-tk
# 安装pyenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 为 Pyenv 设置 shell 环境
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
# 重新加载 Shell 配置文件并将更改应用于当前会话
$ exec "$SHELL"
# 查看pyenv版本
$ pyenv -v
|
了解pyenv的Python版本选择逻辑
当您执行 shim 时,pyenv 通过按以下顺序从以下源读取来确定要使用的 Python 版本:
- 环境
PYENV_VERSION变量(如果指定)。您可以使用该pyenv shell命令在当前 shell 会话中设置此环境变量。
.python-version当前目录中的应用程序特定文件(如果存在)。.python-version您可以使用命令修改当前目录的 文件pyenv local 。
- 通过搜索每个父目录找到的第一个
.python-version文件(如果有),直到到达文件系统的根目录。
- 全局
$(pyenv root)/version文件。您可以使用pyenv global命令修改此文件。
常用命令
基本使用
| Bash |
|---|
| # 查看 pyenv 的版本
$ pyenv -v
# 查看当前使用版本
$ pyenv version
# 罗列当前已安装的所有 python 环境,如果是当前正在使用的环境,则前面会有个 *
$ pyenv versions
# 查看帮助
$ pyenv help
# 如果输入 pyenv 之后使用 tab 不补全,可以使用该命令进行初始即可使用补全命令
$ pyenv init
|
安装Python
| Bash |
|---|
| # 列出所有可安装的Python 版本
$ pyenv install -l
# 安装CPython 3.9.17
# pyenv 会尽力下载并编译想要的 Python 版本
$ pyenv install 3.9.17
# 安装 CPython 3.9.17 并为编译过程传递优化参数以获得最佳性能
$ env PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto' PYTHON_CFLAGS='-march=native -mtune=native' pyenv install 3.9.17
|
Python 版本之间切换
| Bash |
|---|
| # 仅选择当前 shell 会话,临时生效,优先级高于 global
$ pyenv shell <version>
# 会在当前目录创建 .python-version 文件,并记录设置的 python 环境,每次进入该目录会自动设置成该 python 环境
$ pyenv local <version>
# 为您的用户帐户全局选择,重启不会造成再次更改
$ pyenv global <version>
|
卸载Python 版本
| Bash |
|---|
| $ pyenv uninstall <versions>
|
卸载
别忘了还要在~/.bash_profile中删除相关配置即可。
最后说明
我们不要安装pyenv-virtualenv,而是应该使用Poetry进行虚拟环境的管理,这样可以做到思路清晰,而Poetry的虚拟环境更加的方便好用。
再次强调:有了 Poetry,就不要再装pyenv-virtualenv了。
参考
https://github.com/pyenv/pyenv
https://github.com/pyenv/pyenv/wiki
https://github.com/pyenv/pyenv/wiki/Plugins
最后更新:
July 18, 2023
创建日期:
July 18, 2023