web-dev-qa-db-ja.com

Python virtualenvを終了/終了/非アクティブ化する方法

私はvirtualenvとvirtualenvwrapperを使っています。 workonコマンドを使ってvirtualenvの罰金を切り替えることができます。

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$ 

しかし、どのようにしてすべての仮想マシンを終了し、実際のマシンで作業するのでしょうか。今、私が戻る唯一の方法

me@mymachine:~$ 

シェルを終了して新しいシェルを起動することです。それは厄介です。 「何もしない」というコマンドがありますが、もしあれば、それは何ですか?そのようなコマンドが存在しない場合、どのように作成しますか?

1277
Apreche

通常、virtualenvを起動すると、以下の名前のシェル関数が得られます。

$ deactivate

これは物事を正常に戻します。

編集1

virtualenvwrapper,のコードをもう一度見てみました。そうです、すべてのvirtualenvから逃れる方法としてdeactivateもサポートしています。

編集2

Anaconda 環境を離れようとしているのであれば、手順は少し異なります。スタンドアローンスクリプトを使用して非アクティブ化を実装するため、2ワードコマンドのsource deactivateを実行します。

bash-4.3$ deactivate
pyenv-virtualenv: deactivate must be sourced. Run 'source deactivate' instead of 'deactivate'
bash-4.3$ source deactivate
pyenv-virtualenv: no virtualenv has been activated.
2083
Brandon Rhodes

alias workoff をworkonの逆として定義しました。

alias workoff='deactivate'

覚えやすいです:

[bobstein@Host ~]$ workon Django_project
(Django_project)[bobstein@Host ~]$ workoff
[bobstein@Host ~]$
37
Bob Stein
$ deactivate 

これでうまくいかない場合は、試してみてください。

$ source deactivate

bash source がどのように動作するかを知っている人なら誰でもそれは変だと思いますが、virtualenvを取り巻くラッパー/ワークフローはsource activateの補完/対応物として実装されています。 YMMV

36
DarkRider

python仮想環境を有効にするには:

$cd ~/python-venv/
$./bin/activate

無効にする

$deactivate
11
Amitesh Ranjan

deactivateを使用してください。

(my_env) user@user:~/my_env$ deactivate
user@user-Lenovo-E40-80:~/my_env$ 

(my_env)はなくなりました。

2
Basant Rules

virtualenvwrapperを扱う方法を簡単にするためにvirtualenvを使うことができます。

virtualenvwrapperのインストール

pip install virtualenvwrapper

標準のシェルを使用している場合は~/.bashrcを、oh-my-zshを使用している場合は~/.zshrcを開きます。この2行を追加してください。

export WORKON_HOME=$HOME/.virtualenvs  
source /usr/local/bin/virtualenvwrapper.sh

既存のvirtualenvをアクティブにするには、workonコマンドを使用します。

$ workon myenv
(myenv)$

あなたのvirtualenvを無効にするには:

(myenv)$ deactivate

これが私の チュートリアル 、virtualenvとvirtualenvwrapperのインストール方法のステップバイステップです。

2
levi

~/bin/activateをソースとして作成されたdeactivate関数は、~/binでこのようなコマンドを探す通常の方法では検出できないため、関数deactivate

問題は、単一のコマンドdeactivateを含むdeactivateという名前のスクリプトが、venv以外で誤って実行されると無限ループを引き起こすことです。よくある間違い。

これは、関数が存在する場合(つまり、deactivateをソースとして作成された場合)にのみactivateを実行することで回避できます。

#!/bin/bash

declare -Ff deactivate  && deactivate
1
DocSalvager

autoenv を基にした zsh-autoenv を使います。

zsh-autoenv 自動的に(既知の/ホワイトリストに載っている).autoenv.zshファイルをソースします。通常はプロジェクトのルートディレクトリで使われます。 「入力」および「終了」イベント、ネスト、および変数の隠蔽(上書きおよび復元)を処理します。

これが一例です。

; cd dtree 
Switching to virtual environment: Development tree utiles
;dtree(feature/task24|✓); cat .autoenv.zsh       
# Autoenv.
echo -n "Switching to virtual environment: "
printf "\e[38;5;93m%s\e[0m\n" "Development tree utiles"
workon dtree
# eof
dtree(feature/task24|✓); cat .autoenv_leave.zsh 
deactivate

dtreeディレクトリを離れると、仮想環境は自動的に終了します。

0
Sardathrion

私は、Miniconda 3環境内で実行しなければならなかったことを知りました:

conda deactivate

deactivatesource deactivateも私のために働いていませんでした。

0
CephBirk