Python のバージョンを自由に切り替える方法について話しましょう

WBOY
リリース: 2023-04-13 18:58:07
転載
1543 人が閲覧しました

まえがき

皆さんが日々の開発作業でこのような状況に遭遇したことがあるかどうかはわかりません:

  • プロジェクト A は Python 2.7 バージョンを使用して開発されました (おそらく歴史的な理由によるものです)レガシー (問題はアップグレードも更新もされていません)
  • プロジェクト B は、requests==2.25.1 バージョンが使用されたと仮定して、Python バージョン 3.10.4 を使用して開発されました。
  • プロジェクト C は、Python を使用して開発されましたバージョン 3.10.4 はい、requests==2.27.1 バージョンが使用されると仮定します

まず最初の質問: Python のバージョンの問題ですが、Python 2.x では大きな違いがあります。 Python 3.x など、バージョンが多数あり、管理が容易ではありません。

2 番目の質問: リクエストのバージョンはプロジェクト B とプロジェクト C に影響を与えない可能性があります。しかし、他のプロジェクトで同じパッケージの異なるバージョンを使用すると、大きな影響を与える可能性があります。次に、この時点でバージョンを区別する必要があるため、同じ Python バージョンで 2 つのバージョンのパッケージを使用する必要があります。明らかに、このシナリオではパッケージ管理が問題になります。異なるパッケージ環境が相互に干渉しないようにすることが非常に重要です。それは日々のプロジェクト開発において必要であり、基本的なニーズです。その場合、最良の方法は 2 つの仮想環境です。

それでは、異なるパッケージ バージョンを制御する機能を提供しながら、異なるバージョンのインタープリターを管理できる最終的なソリューションはあるのでしょうか? もちろん、それは pyenv です。

1. pyenv とは?

pyenv は Ruby コミュニティからフォークされた Python 環境管理ツールで、グローバル Python インタプリタのバージョンを簡単に切り替えることができ、virtualenv と組み合わせることができます管理に便利なバッグです。 pyenv をインストールすると、次のように環境変数が $PATH に追加されます:

❯ echo $PATH
/Users/allenjol/.pyenv/plugins/pyenv-virtualenv/shims:/Users/allenjol/.pyenv/shims:/usr/local/bin:/usr/local/sbin
ログイン後にコピー

つまり、pyenv は実際に PATH 環境変数を制御して、Python のバージョンを切り替えます。 PATH パスの先頭に shims パスを挿入することで、Python にバージョン管理を実装します。

2. pyenv、virtualenv、pipenv の関係と違い

前述したように、pyenv は Python のバージョンを制御し、virtualenv は比較的成熟した Python 仮想環境管理ツールであり、pipenv はrequrests package Kenneth Reitz によって Python 用のパッケージ管理ツールとして作成されたツールで、仮想環境を生成することもできます。この記事では今のところこのツールについては説明しませんが、後の記事で紹介します。

Pyenv は Python インタープリターのバージョンの管理に重点を置いており、Python のバージョンを自由に切り替えることができ、特定の仮想環境ディレクトリを指定する必要はありません。

3. 仮想環境 pyenv

CentOS7 に pyenv をインストール

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
ログイン後にコピー

MacOS に pyenv をインストール

brew update
brew install pyenv
ログイン後にコピー

ネットワークの関係で MacOS にうまくインストールできない場合理由 brew を使用する解決策は 2 つあります。

  • ソースを変更します。
  • https://sre.ayunw.cn/posts/terminal_configure_proxy_with_clash/ を参照してプロキシを設定します

環境変数の設定

# 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 のバージョンの表示

pyenv --version
ログイン後にコピー

4. コマンドラインの使用方法

# 查看当前版本
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
ログイン後にコピー

5. パッケージ管理プラグイン pyenv-virtualenv

pyenv-virtualenv をインストールします

Linux でのインストール

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
 
# 配置环境变量
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
ログイン後にコピー

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"
ログイン後にコピー

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
ログイン後にコピー

切り替えるときPython へ 仮想環境を使用する場合、仮想環境内の pip とパッケージはターゲット環境に切り替えられます。元々の環境とは関係ありません。このようにして、Python インタープリター環境とパッケージのバージョンを適切に分離できます。

以上がPython のバージョンを自由に切り替える方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート