markosamuli.pyenv

markosamuli.pyenv

Ansibleクオリティスコア Ansibleロール GitHubリリース ライセンス

ブランチ パイプライン
master master

Ansibleロールは、UbuntuまたはmacOSの開発環境にpyenvpyenv-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_shellfalseに設定し、これらのファイルを自分で更新してクリーンに保つことをお勧めします。

参照用の.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

変更

ライセンス

作者情報

プロジェクトについて

Installs pyenv and pyenv-virtualenv

インストール
ansible-galaxy install markosamuli.pyenv
ライセンス
mit
ダウンロード
15.8k
所有者
Random hacker. Engineering at @echo-health