markosamuli.pyenv
markosamuli.pyenv
ブランチ | パイプライン |
---|---|
master |
Ansibleロールは、UbuntuまたはmacOSの開発環境にpyenvとpyenv-virtualenvをインストールします。
オプションで、pyenv-virtualenvwrapperをインストールして環境を管理できます。
このロールは、ユーザーのホームディレクトリの下にのみpyenvをインストールするため、プロダクションサーバーには使用しないでください。
macOSでのHomebrewからインストールする
macOSでpyenvとプラグインをインストールする場合のデフォルトの方法は、Homebrewを使用することです。
ロールは既存のHomebrewインストールからGitベースのインストールに移行する方法を知らないため、既存のインストールを検出して、以前の方法を引き続き使用しようとします。
移行したい場合は、ロールを実行する前に、既存の~/.pyenv
ディレクトリをバックアップして削除してください。
LinuxでのHomebrewからインストールする
このロールは、Linux上でHomebrewを使用してpyenvとプラグインをインストールするための実験的なサポートを含んでいます。
ロールはLinux自体にHomebrewをインストールせず、デフォルトの/home/linuxbrew/.linuxbrew
にインストールされていることを前提としています。
Homebrewインストールが存在する場合のLinuxでのpyenvによるPythonバージョンのインストールには、いくつかの既知の問題があります:
- readline拡張がコンパイルされなかった。Ubuntu 16にLinuxbrewでインストールされたpyenv#1479
インストールされたPythonバージョン
このロールはpyenv_python_versions
変数で定義されたPythonのバージョンをインストールします。
グローバルバージョンを設定するには、pyenv_global
変数を希望するバージョンに設定します。
pyenv_global: "{{ pyenv_python37_version }} system"
これは、最新のPython 2とPython 3のバージョンとシステムバージョンをデフォルトとして使用するように設定されています。
シェルの設定ファイルへの変更
このロールは、.bashrc
と.zshrc
ファイルに読み込まれる~/.pyenv/.pyenvrc
に設定ファイルを作成します。
コード補完はデフォルトで読み込まれます。
シェルスクリプトの.dotfiles
を管理している場合やフレームワークを使用している場合は、pyenv_init_shell
をfalse
に設定し、これらのファイルを自分で更新してクリーンに保つことをお勧めします。
参照用の.bashrc
の設定:
if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
source $HOME/.pyenv/.pyenvrc
if [ -e "$HOME/.pyenv/completions/pyenv.bash" ]; then
source $HOME/.pyenv/completions/pyenv.bash
elif [ -e "/usr/local/opt/pyenv/completions/pyenv.bash" ]; then
source /usr/local/opt/pyenv/completions/pyenv.bash
fi
fi
参照用の.zshrc
の設定:
if [ -e "$HOME/.pyenv/.pyenvrc" ]; then
source $HOME/.pyenv/.pyenvrc
if [ -e "$HOME/.pyenv/completions/pyenv.zsh" ]; then
source $HOME/.pyenv/completions/pyenv.zsh
elif [ -e "/usr/local/opt/pyenv/completions/pyenv.zsh" ]; then
source /usr/local/opt/pyenv/completions/pyenv.zsh
fi
fi
ロールの変数
~/.pyenv
へのパスは環境変数に基づいています:
pyenv_home: "{{ ansible_env.HOME }}"
pyenv_root: "{{ ansible_env.HOME }}/.pyenv"
ユーザーホームディレクトリ内の.bashrc
および.zshrc
ファイルを更新します:
pyenv_init_shell: true
インストールするバージョン:
pyenv_version: "v1.2.13"
pyenv_virtualenv_version: "v1.1.5"
pyenv_virtualenvwrapper_version: "v20140609"
最新のPython 3.7およびPython 3.8バージョン:
pyenv_python37_version: "3.7.6"
pyenv_python38_version: "3.8.1"
デフォルトでPython 2とPython 3のバージョンがインストールされます:
pyenv_python_versions:
- "{{ pyenv_python37_version }}"
- "{{ pyenv_python38_version }}"
Python 3.7をグローバルバージョンとして設定し、system
フォールバックの設定:
pyenv_global: "{{ pyenv_python37_version }} system"
virtualenvwrapperプラグインをインストール:
pyenv_virtualenvwrapper: false
pyenv_virtualenvwrapper_home: "{{ ansible_env.HOME }}/.virtualenvs"
macOSでHomebrewパッケージマネージャーを使用してインストール:
pyenv_install_from_package_manager: true
既存のインストール方法を検出して使用:
pyenv_detect_existing_install: true
LinuxでHomebrewを使用してインストール:
pyenv_homebrew_on_linux: true
サンプルプレイブック
- hosts: localhost
connection: local
become: false
roles:
- role: markosamuli.pyenv
バージョンの更新
次のスクリプトを実行してGitHubから最新のリリースを取得し、ロールのデフォルトを更新します。
pyenvリリースを更新:
./update-release pyenv
pyenv-virtualenvリリースを更新:
./update-release pyenv-virtualenv
デフォルトのPython 3.7バージョンを更新:
./update-python python37
デフォルトのPython 3.8バージョンを更新:
./update-python python38
すべてのバージョンを更新:
make update
コーディングスタイル
プリコミットフックをインストールし、コーディングスタイルを検証:
make lint
テストを実行する
Dockerを使用してUbuntuとDebianでテストを実行:
make test
謝辞
.pyenvrc
ファイルの使用と、Pythonバージョンをインストールするために使用される部分は、avanov.pyenvロールから取得されました。
開発
ローカルのvirtualenvに開発依存関係をインストール:
make setup
pre-commitフックをインストール:
make install-git-hooks
変更
ライセンス
作者情報
ansible-galaxy install markosamuli.pyenv