Apr*_*che 1461 python virtualenv virtualenvwrapper
我正在使用virtualenv和virtualenvwrapper.我可以使用workon命令在virtualenv之间切换.
me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$
Run Code Online (Sandbox Code Playgroud)
但是,如何退出所有虚拟机并再次使用我的真机?现在,我回到的唯一方法
me@mymachine:~$
Run Code Online (Sandbox Code Playgroud)
是退出shell并开始一个新的.那有点烦人.是否有一个"无所事事"的命令,如果有的话,它是什么?如果这样的命令不存在,我将如何创建它?
Bra*_*des 2343
通常,激活virtualenv会为您提供一个名为的shell函数:
$ deactivate
Run Code Online (Sandbox Code Playgroud)
这让事情恢复正常.
我刚刚再次专门看了代码virtualenvwrapper
,是的,它也支持deactivate
作为逃避所有virtualenvs的方法.
如果您尝试离开Anaconda环境,则过程略有不同:运行双字命令,conda
因为它们使用独立脚本实现停用.
conda deactivate
Run Code Online (Sandbox Code Playgroud)
Bob*_*ein 47
我将别名 workoff定义为workon的反义词:
alias workoff='deactivate'
Run Code Online (Sandbox Code Playgroud)
容易记住:
[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$
Run Code Online (Sandbox Code Playgroud)
小智 45
$ deactivate
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试
$ source deactivate
Run Code Online (Sandbox Code Playgroud)
任何知道bashsource
如何工作的人会认为这很奇怪,但围绕virtualenv的一些包装/工作流实现为赞美/对应source activate
.因人而异
kyr*_*lon 32
运行deactivate [name of your environment]
可以退出/停用您的 python 环境。
PowerShell 中 python3.6 Windows 10 的示例:
PS C:\Users\kyrlon\Desktop> py -m venv env1
PS C:\Users\kyrlon\Desktop> .\env1\Scripts\activate
(env1) PS C:\Users\kyrlon\Desktop> deactivate env1
PS C:\Users\kyrlon\Desktop> py -m venv env1
Run Code Online (Sandbox Code Playgroud)
Linux Ubuntu 20.04 LTS 桌面上的 python3.9 示例:
kyrlon@pc1:~$ python3 -m venv venv1
kyrlon@pc1:~$ source venv1/bin/activate
(venv1) kyrlon@pc1:~$ deactivate venv1
kyrlon@pc1:~$
Run Code Online (Sandbox Code Playgroud)
Raj*_*jan 24
在 MacOs ventura 中 -
激活 -
sudo chmod -R 755 ./venv/bin
source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
停用 -
deactivate
Run Code Online (Sandbox Code Playgroud)
Ami*_*jan 12
激活python虚拟环境:
$cd ~/python-venv/
$./bin/activate
Run Code Online (Sandbox Code Playgroud)
停用:
$deactivate
Run Code Online (Sandbox Code Playgroud)
Nic*_*aid 11
对于我的特殊情况,我转到工作目录
CD /myworkingdirectory
Run Code Online (Sandbox Code Playgroud)
然后我像这样激活我的环境:
my-env/scripts/activate
Run Code Online (Sandbox Code Playgroud)
从同一个工作文件夹 ( /myworkingdirectory
) 停用,我尝试了此操作,但它什么也没做:
my-env/scripts/deactivate
Run Code Online (Sandbox Code Playgroud)
这确实有效:
deactivate
Run Code Online (Sandbox Code Playgroud)
Wil*_*hen 10
使用deactivate
venvactivate
脚本提供的功能要求您相信停用函数已正确编码,以将所有环境变量干净地重置回\xe2\x80\x94 之前的状态,不仅考虑到原始激活,还考虑到任何开关、配置或您在此期间可能完成的其他工作。
这可能没问题,但它确实会带来一种新的、非零的风险,即事后修改环境。
\n\n然而,从技术上来说,一个进程直接改变其父进程的环境变量是不可能的,所以我们可以使用一个单独的子 shell 来绝对确保我们的venv
进程不会留下任何残留的更改:
$ bash --init-file PythonVenv/bin/activate
venv
. 您的原始bash
外壳保持不变。$ exit
或[CTRL]
+[D]
venv
,并将您带回到激活脚本对环境进行任何更改之前的原始 shell。[user@computer ~]$ echo $VIRTUAL_ENV\nNo virtualenv!\n\n[user@computer ~]$ bash --init-file PythonVenv/bin/activate\n\n(PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV\n/home/user/PythonVenv\n\n(PythonVenv) [user@computer ~]$ exit\nexit\n\n[user@computer ~]$ echo $VIRTUAL_ENV\nNo virtualenv!\n
Run Code Online (Sandbox Code Playgroud)\n
我发现在Miniconda3环境中必须运行:
conda deactivate
Run Code Online (Sandbox Code Playgroud)
既deactivate
没有source deactivate
为我工作,也没有为我工作。
您可以使用virtualenvwrapper
以简化您使用virtualenv
.
安装virtualenvwrapper
:
pip install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
如果您使用的是标准 shell,请打开您的~/.bashrc
或者~/.zshrc
如果您使用Oh My Zsh。添加这两行:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)
要激活现有的 virtualenv,请使用命令workon
:
$ workon myenv
(myenv)$
Run Code Online (Sandbox Code Playgroud)
为了停用您的 virtualenv:
(myenv)$ deactivate
Run Code Online (Sandbox Code Playgroud)
这是我的教程,逐步介绍如何安装 virtualenv 和 virtualenvwrapper。
小智 7
$ conda deactivate
或者
$ source deactivate
会起作用。
如果它不起作用,请尝试deactivate [name of your environment]
替代。
由于deactivate
通过 sourceing 创建的函数~/bin/activate
无法通过在 中查找此类命令的常用方法来发现~/bin
,因此您可能希望创建一个仅执行该函数的函数deactivate
。
问题是,如果在不在 venv 中意外执行deactivate
包含单个命令的名为 的脚本,将导致无限循环。deactivate
一个常见的错误。
deactivate
可以通过仅在函数存在时执行(即已通过 source 创建)来避免这种情况activate
。
#!/bin/bash
declare -Ff deactivate && deactivate
Run Code Online (Sandbox Code Playgroud)