[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
2022-07-09 14:49:02
質問
私はローカルで私のファブリックスクリプトを実行したいのですが、それは順番に私のサーバーにログインし、ユーザーをデプロイに切り替え、プロジェクトの .virtualenv を有効にして、プロジェクトのディレクトリを変更し、git pull を発行することになります。
def git_pull():
sudo('su deploy')
# here i need to switch to the virtualenv
run('git pull')
私は通常、virtualenvwrapperからworkonコマンドを使用し、activateファイルをソースとして、postactivateファイルによりプロジェクトフォルダに入れます。この場合、fabricはshell内から実行されるため、制御はfabricに委ねられるようで、bashの組み込みソースである'$source ~/.virtualenv/myvenv/bin/activate' は使用できません。
どなたか、これをどのように行ったかの例と説明をお持ちの方はいらっしゃいませんか?
どのように解決するのですか?
今現在、あなたは私がしていることをすることができます。これは不器用ですが、完全にうまくいきます*。(この使い方は、あなたがvirtualenvwrapperを使っていることを仮定しています--そうでなければ、あなたが言ったかなり長い「ソース」呼び出しで容易に代用できます)。
def task():
workon = 'workon myvenv && '
run(workon + 'git pull')
run(workon + 'do other stuff, etc')
バージョン 1.0 以降、Fabric は
prefix
コンテキストマネージャ
で、このテクニックを使っているので、例えば
def task():
with prefix('workon myvenv'):
run('git pull')
run('do other stuff, etc')
* を使用する場合があるはずです。
command1 && command2
を使用すると、次のような場合です。
command1
が失敗する (
command2
は決して実行されない)、または
command1
が適切にエスケープされておらず、特殊なシェル文字を含んでいる場合などです。
関連
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み] Python 3をvirtualenvで使う
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Python 2 で HEAD HTTP リクエストを送信するには?
-
[解決済み] 2ウェイ/リバースマップ[重複]について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] 2つの弦をインターリーブさせる最もピトニックな方法
-
[解決済み] ネストしたdictからのPythonデータクラス
-
[解決済み] Python で、クラスオブジェクトを dict にキャストするにはどうしたらいいですか?
-
[解決済み] IPythonの終了確認を無効にする
-
[解決済み] re.sub置換パターンにおけるキャプチャグループの後方参照への対応
-
[解決済み] python BeautifulSoup テーブルのパース
-
[解決済み] 条件を満たした場合にNumpyの要素を置き換える
-
[解決済み] PILでPNG画像を文字列に書き出すには?