7

私は、python virtualenv をセットアップするためのいくつかの Ansible play を作成しており、開発中にも python パッケージを更新してサーバーを再起動しています。pip でパッケージを更新する際に問題が発生しています。これがどのように行われるかはあまり気にしませんが、開発中に virtualenv の python パスにパスを追加してからサーバーを再起動することをお勧めしますが、Ansible でそれを行う方法はまだわかりません。

したがって、私の質問は、virtualenv のサイト パッケージにインストールするローカル git リポジトリをセットアップする方法、または正しい virtualenv を使用してリポジトリの場所を sys.path.insert にセットアップする方法です。

現在、私はやろうとしていました:

sudo pip install ~/workspace/python-repo

パッケージをインストールする前に、Authenicator のクラスの名前を Authen のような完全に間違った名前に変更しました。クラスは、新規インストール中に Authen を示します。次に、クラス名を正しい名前 (Authenticator) に戻し、バージョンを上げて実行します。

sudo pip install ~/workspace/python-repo --upgrade

しかし、サイト パッケージ内の実際のファイルを調べた後も、更新されたファイルではなく Authen 名が表示されます。

開発中にローカル リポジトリを使用して、自分の環境で更新されたファイルをすぐに取得できるようにするにはどうすればよいですか? Ansible を使用して、これを繰り返し可能なプロセスにすることもできます。

これが私がAnsibleでやろうとしていることです。私の最初のプレイは、一度だけ実行したい環境をセットアップすることです。

- name: Install python-repo
local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development

${python_root} は私の python プロジェクトの場所であり、もちろん作業ディレクトリは新しい virtualenv セットアップです。

それからどういうわけか、virtualenv の python リポジトリを更新する開発プレイが必要です。これは私がこれまで持っているものですが、これも機能しません。

- name: Update python-repo
local_action: pip  name=${python_root}
                   virtualenv=${working_dir}/development
                   state=latest

- name: Restart services.
  local_action: service name=${item} state=restarted
  with_items: ${services} 
4

1 に答える 1

12

他のすべての人がこれを参照できるように、これを正しい答えとして投稿します。

現在、ローカルのpythonパッケージをインストールしてからvirtualenvを作成し、開発用にすべてをインストールすることで環境をセットアップするAnsibleプレイがあります。最初に virtualenv をセットアップし、ローカルの git リポジトリを環境にインストールする際に、Ansible でこれらのタスクを使用します。

- name: Source virtualenvwrapper.
  local_action: shell /usr/local/bin/virtualenvwrapper.sh 
                    executable=/bin/bash

- name: Set Enviroment to working directory.
  local_action: shell export WORKON_HOME=${working_dir}

- name: Set pip to use working virtual enviroment.
  local_action: shell export PIP_VIRTUALENV_BASE=$WORKON_HOME

- name: Create new virtualenv in development.
  local_action: pip requirements=${virtual_requirements} 
                  virtualenv=${working_dir}/development

- name: Install python-repo as editable 
  local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development
                  extra_args='-e ${python_root}' 

開発を開始し、テストして実行する準備ができたら、別の Ansible プレイを使用してローカルの変更をデプロイします。これらのタスクを使用します。

- name: Update python-repo
  local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development
                  extra_args='--upgrade'

- name: Restart services.
  local_action: service name=${item} state=restarted
  with_items: ${services}

これにより、Python の更新がすぐに受け入れられ、サーバーが再起動されます。PHP開発環境から来て、変更を受け入れるためにF5を押すだけでよいので、私は長い間これに頭を悩ませていました。私は良い Python 開発環境が欲しかったので、これは受け入れられるプロセスだと思います。

于 2013-09-12T16:11:51.070 に答える