Maison > développement back-end > Tutoriel Python > Parlons de la façon de changer de version de Python à volonté

Parlons de la façon de changer de version de Python à volonté

WBOY
Libérer: 2023-04-13 18:58:07
avant
1564 Les gens l'ont consulté

Avant-propos

Je ne sais pas si vous avez rencontré une telle situation dans votre travail de développement quotidien :

  • Le projet A a été développé en utilisant la version Python 2.7 (il n'a peut-être pas été mis à niveau en raison de problèmes historiques)
  • Le projet B a été développé avec Python 2.7 La version Python 3.10.4 est développée, en supposant que la version requêtes==2.25.1 est utilisée
  • Le projet C est développé avec la version Python 3.10.4, en supposant que la version requêtes==2.27.1 est utilisée

Première question : Concernant la version Python, la différence entre Python 2.x et Python 3.x est assez grande, et c'est difficile à gérer s'il y a trop de versions.

Deuxième question : Peut-être que les versions des requêtes n'auront aucun impact sur le projet B et le projet C. Mais utiliser différentes versions du même package dans un autre projet peut avoir un impact énorme. Ensuite, vous devez différencier les versions à ce stade, donc la même version de Python doit utiliser deux versions de packages. Évidemment, la gestion des packages est un problème dans ce scénario. Il est très important de s'assurer que les différents environnements de packages n'interfèrent pas les uns avec les autres. lors du développement quotidien du projet. C’est nécessaire et un besoin fondamental. Dans ce cas, la meilleure solution consiste à utiliser deux environnements virtuels.

Alors existe-t-il une solution qui puisse à terme résoudre le problème de la gestion des différentes versions des interpréteurs et également fournir une fonction pour contrôler les différentes versions des packages. Bien sûr, il y en a, c'est pyenv ?

1. Qu'est-ce que pyenv ?

Pyenv est un outil de gestion d'environnement Python issu de la communauté Ruby. Il peut facilement changer de version globale de l'interpréteur Python et peut être combiné avec le package de gestion pratique de virtualenv. Après avoir installé pyenv, il ajoutera des variables d'environnement à votre $PATH, comme suit :

❯ echo $PATH
/Users/allenjol/.pyenv/plugins/pyenv-virtualenv/shims:/Users/allenjol/.pyenv/shims:/usr/local/bin:/usr/local/sbin
Copier après la connexion

Donc, pyenv contrôle en fait vos variables d'environnement PATH pour changer de version de Python. Il implémente le contrôle de version sur Python en insérant un chemin shims au début du chemin PATH.

2. La relation et la différence entre pyenv, virtualenv et pipenv

Comme mentionné précédemment, pyenv contrôle la version Python, virtualenv est un outil de gestion d'environnement virtuel relativement mature pour Python et pipenv est un outil écrit par Kenneth Reitz, l'auteur du package request. En tant qu'outil de gestion de packages Python, il peut également générer des environnements virtuels. Cet article ne discutera pas de cet outil pour l’instant, mais le présentera dans un article ultérieur.

pyenv se concentre sur la gestion des versions de l'interpréteur Python. Vous pouvez changer de version de Python à volonté et vous n'avez pas besoin de spécifier un répertoire d'environnement virtuel spécifique.

3. Environnement virtuel pyenv

Installez pyenv sous CentOS7

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
Copier après la connexion

Installez pyenv sous MacOS

brew update
brew install pyenv
Copier après la connexion

Si vous ne pouvez pas utiliser Brew Well pour des raisons de réseau sous MacOS, il existe deux solutions :

  • Changer la source
  • Référence https://sre.ayunw.cn/posts/terminal_configure_proxy_with_clash/ Utilisez la méthode de cet article pour configurer le proxy

Définir les variables d'environnement

# 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
Copier après la connexion

Vérifiez la version de pyenv

pyenv --version
Copier après la connexion

4. Comment utiliser la ligne de commande

# 查看当前版本
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
Copier après la connexion

5. Gestion des packages Plug-in pyenv-virtualenv

Installer pyenv-virtualenv

Installation sous Linux

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
 
# 配置环境变量
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
Copier après la connexion

Installation sous MacOS

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"
Copier après la connexion

Utiliser pyenv-virtualenv

# 创建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
Copier après la connexion

Lorsque vous changez d'environnement virtuel Python, votre pip et votre environnement virtuel Les packages sont basculés vers votre environnement cible. Cela n'a rien à voir avec l'environnement d'origine. De cette façon, nous obtenons une bonne isolation des versions de l'environnement et des packages de l'interpréteur Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal