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