I don’t know if you have encountered such a situation in your daily development work:
First of all, the first question: the problem of Python version. There is a big difference between Python 2.x and Python 3.x, and there are many versions. Not easy to manage.
The second question: Maybe the version of requests will not have any impact in project B and project C. But using different versions of the same package in some other project can have a huge impact. Then you need to differentiate the versions at this time, so the same Python version needs to use two versions of packages. Obviously package management is a problem in this scenario. It is very important to ensure that different package environments do not interfere with each other during daily project development. It is necessary and a basic need. Then the best way is two virtual environments.
So is there a final solution that can manage different versions of interpreters while also providing a function to control different package versions? Of course there is, it is pyenv.
pyenv is a Python environment management tool forked from the ruby community. It can easily switch the global Python interpreter version, and it can be combined with virtualenv for convenient management. Bag. After installing pyenv, it will add environment variables to your $PATH, as follows:
❯ echo $PATH /Users/allenjol/.pyenv/plugins/pyenv-virtualenv/shims:/Users/allenjol/.pyenv/shims:/usr/local/bin:/usr/local/sbin
So, pyenv actually controls your PATH environment variables to switch Python versions. It implements version control on Python by inserting a shims path at the beginning of the PATH path.
As mentioned earlier, pyenv controls the Python version, virtualenv is a relatively mature Python virtual environment management tool, and pipenv is the requrests package A tool written by Kenneth Reitz as a package management tool for Python, it can also generate virtual environments. This article will not discuss this tool for now, but will introduce it in a later article.
Pyenv focuses on the management of Python interpreter versions. You can switch your Python version at will and do not need to specify a specific virtual environment directory.
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
brew update brew install pyenv
If you cannot install it well under MacOS due to network reasons There are two solutions using brew:
# bash下设置环境变量 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc # zsh下设置环境变量(我是iterm2+zsh) echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc
pyenv --version
# 查看当前版本 pyenv version # 查看所有版本 pyenv versions # 查看有哪些版本可供安装 pyenv install --list # 安装python 3.10.4版本 pyenv install 3.10.4 # 安装一个版本后rehash一下,让pyenv知道管理的Python版本信息 pyenv rehash # 卸载 pyenv uninstall 3.10.4 # 查看所有版本 ❯ pyenv versions system * 3.10.4 (set by /Users/allenjol/.pyenv/version) # 切换全局的Python版本,表示切换为系统的Python版本 pyenv global system # 表示切换为pyenv的3.10.4版本 pyenv global 3.10.4
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv # 配置环境变量 echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile source ~/.bash_profile
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv # MacOS的zsh echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc exec "$SHELL" # 方法二 brew install pyenv-virtualenv echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc exec "$SHELL"
# 创建venv环境 pyenv virtualenv venv3.10.4 # 激活venv pyenv activate venv3.10.4 pyenv version # 退出venv环境 pyenv deactivate venv3.10.4 # 删除虚拟环境 pyenv uninstall venv3.10.4
When you switch to Python When using a virtual environment, your pip and the packages in your virtual environment are switched to your target environment. It has nothing to do with the original environment. So this way it gets good version isolation of the python interpreter environment and packages.
The above is the detailed content of Let's talk about how to switch Python versions at will. For more information, please follow other related articles on the PHP Chinese website!