Pythonはpyenvを使って多環境管理を実現します。


1背景&概要
いくつかの需要のために、TensorFlowをインストールする必要があります。

pip install tensorflow
そして。

いい奴
なんですか?Python 3.9ですので、pypiを検索しましたが、本当にサポートされていません。最高はPython 3.8だけです。

そこで、多バージョンのPython環境を考慮して、たまたまGithubに22.3 kのものを見ました。

これはpyenvであり、各Pythonバージョンの間で簡単に切り替えることができるPythonバージョンのマネージャである。
さて、本題に入ります。
2インストール
インストールには二つの方法があります。
  • 自動実装
  • 手動インストール
  • 2.1自動設置
    
    curl https://pyenv.run | bash
    #  
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    2.2手動でインストールする
    手動インストールは大きく三つのステップに分けられます。
  • pyenv
  • をインストールします。
  • 環境変数を設定する
  • 初期化
  • 2.2.1 pyenvを取り付ける
    筆者のシステムManjaroは、直接yayにインストールできます。
    
    yay -S pyenv
    他のシステムは、apt search/yum searchなどを使って、ソフトウェアパッケージの倉庫があるかどうか確認してください。あれば直接インストールすればいいです。なければ、cloneをインストールしてもいいです。
    
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    (このステップは任意である)次いで、動的bashの拡張をコンパイルして加速することである。
    
    cd ~/.pyenv && src/configure && make -C src
    公式解釈によると、コンパイルの失敗を恐れる必要はない。まだ正常に動作するからだ。
    2.2.2環境変数の設定
    このステップは、PYENV及び更新されたPATHを環境変数に構成し、公式文書はshellタイプに分類し、自分の状況に応じて選択すればよい。
    2.2.1 bash
    
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    2.2.2 Zsh
    
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    2.2.3 Fish shell
    
    set -Ux PYENV_ROOT $HOME/.pyenv
    set -Ux fish_user_paths $PYENV_ROOT/bin $fish_user_paths
    2.2.3初期化
    環境変数の設定後も初期化が行われ、ドキュメントは同様にshellタイプで分類されています。
    2.2.3.1 bash
    
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
    eval "$(pyenv init -)"
    fi' >> ~/.bash_profile
    2.3.2 Zsh
    
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
    eval "$(pyenv init -)"
    fi' >> ~/.zshrc
    2.3.3 Fish shell
    
    echo -e '

    # pyenv init
    if command -v pyenv 1>/dev/null 2>&1
    pyenv init - | source
    end' >> ~/.config/fish/config.fish
    2.3テスト
    端末を再開し、pyenvを入力し、次のような情報を出力すると、インストールが成功したことが分かります。

    3基本使用
  •  pyenv commands:すべてのpyenvコマンドを確認する
  • pyenv exec:特定のPythonバージョンを使用して、あるコマンド
  • を実行します。
  • pyenv global:グローバルPythonバージョン
  • を設定または表示します。
  • pyenv Hook s:与えられたpyenvコマンドのフックスクリプトを一覧表示する
  • pyenv init:shell環境を設定する
  • pyenv install:あるバージョンのPython
  • をインストールします。
  • pyenv local:あるアプリケーションのために特定のPythonバージョン
  • を設定します。
  • pyenv prefix:Pythonバージョンに対応するパスプレフィックス
  • を表示する。
  • pyenv rehash:再ハッシュpyenv shims
  • pyenv root:pyenvルートディレクトリ
  • を表示します。
  • pyenv shell:あるshellのために特定のPythonバージョン(pyenv localに類似)を設定します。
  • pyenv shims:現在存在するshimsを一覧表示する(pyenvの動作原理は、shimsというディレクトリの下でPython解釈器の「偽バージョン」を作成し、Pythonアプリケーションを探している場合は先にディレクトリから検索する)
  • pyenv uninstall:あるバージョンPython
  • をアンインストールします。
  • pyenv-version:pyenvバージョン
  • を表示します。
  • pyenv version:現在のPythonバージョンを表示し、pyenv version-name+pyenv version-file
  • に相当する。
  • pyenv version-file/version-name/version-origgin:現在Pythonバージョンに対応するファイル/名前/位置
  • pyenv whence:インストールされている範囲のPythonバージョンを一覧表示します。たとえば、ローカルにインストールされているPython 2からPython 3のバージョンを一覧表示します。pyenv whence 2 to3
  • を使用できます。
  • pyenv which:実行可能ファイルの絶対パスを一覧表示します。例えば、pyenv which pythonは、pythonコマンドの絶対パス
  • を一覧表示します。
    4実用化
    これだけの命令が出ましたが、実際に使用頻度が高いコマンドは多くありません。主に以下のようなものがあります。
  • pyenv version
  • pyenv install
  • pyenv global
  • 一般的にインストールする手順は以下の通りです。まず使用します。
    
    pyenv install -l
    検索に必要なPythonバージョン:

    ここにはもう一つの大きな串があります。すべてのスクリーンショットはありません。たとえば3.6.12バージョンをインストールする必要があります。
    
    pyenv install 3.6.12
    インストールしてから使えます。
    
    pyenv versions
    インストールされているバージョンを見てください。ここには2つのインストールがあります。一つはシステムが持っているPython3.9、もう一つはpyenvがインストールしているPython3.6です。

    次に使う
    
    pyenv global 3.6.12
    新しいインストールのバージョンに切り替え:

    このようにして、新たにインストールされたバージョンに切り替えられ、グローバル置換ではなく、ローカル置換であれば、pyenv local/pyenv shellを使用することができる。
    なお、バージョンを切り替えるとpipのバージョンも異なり、2つのバージョンがpipを使用してインストールされたパケットも独立している。


    5参考
    1、Github-pyenv
    2、Github-pyenv-innstaller
    3、知乎-Python環境Memo
    ここでPythonはpyenvを使って多環境管理を実現する文章について紹介します。Python pyenvに関する多くの環境管理内容は以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。