问:
我正在使用 virtualenv 和 virtualenvwrapper。我可以使用 workon 命令在 virtualenv 之间切换。
me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$
如何退出所有虚拟环境并再次在我的系统环境中工作?现在,我返回 me@mymachine:~$ 的唯一方法是退出 shell 并开始一个新的。这有点烦人。是否有一个命令可以处理“无”,如果有,它是什么?如果这样的命令不存在,我将如何创建它?
答1:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
通常,激活 virtualenv 会给你一个名为的 shell 函数:
$ deactivate
这使事情恢复正常。
我刚刚再次专门查看了 virtualenvwrapper 的代码,是的,它也支持 deactivate 作为从所有 virtualenvs 中逃脱的方式。
如果您尝试离开 Anaconda 环境,则该命令取决于您的 conda 版本。最近的版本(如 4.6)直接在您的 shell 中安装 conda 函数,在这种情况下您运行:
conda deactivate
较旧的 conda 版本改为使用独立脚本实现停用:
source deactivate
“停用”命令不是二进制文件,也不是您“来源”的脚本;它是一个 shell 别名,由“activate”脚本在您当前的 shell 中动态定义。
@Apreche 与此同时(大约四年后),这似乎是文档中的added。
如果将其称为“workoff”或“unworkon”会更直观。或者如果“workon”被称为“activate”。感谢上帝的别名。
@kkurian — 您应该建议在 virtualenvwrapper 的问题跟踪器上,也许 Doug Hellmann 会考虑它!请注意,对于以后可能会阅读这些评论的人,workon NOT 是原生 virtualenv 命令(这是原始问题的内容),而是 virtualenvwrapper 命令!
猜猜“workon”中实际的 virtualenv 命令叫什么? ...(剧透警告)... ...(剧透警告)... ...(剧透警告)... ...(剧透警告)...激活!
答2:
打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!
利用:
$ deactivate
如果这不起作用,请尝试
$ source deactivate
任何知道 Bash source 工作原理的人都会认为这很奇怪,但是一些围绕 virtualenv 的包装器/工作流将它作为 source activate 的补充/对应物来实现。你的旅费可能会改变。
deactivate 是在您获取 activate 文件时创建的函数。您对 source deactivate 的建议完全没有意义,因为没有名为 deactivate 的文件
这不值得反对。请参阅所选响应的编辑:source deactivate 适用于 anaconda 环境。
由于不符合 SO 答案质量标准,它“值得”投反对票。与其说是答案,不如说是评论。但是,由于海报的79声誉,我们应该很好,并给予良好的反馈。
@Abdul 我在 stackoverflow.com/posts/29586756/revisions 的第 2 版中演示了如何提高您的答案质量
如果您的 shell 中没有停用命令,这将非常无用。我真的不明白为什么这会帮助解决问题。虚拟环境中没有停用脚本。
答3:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
我定义了一个 alias,workoff,作为 workon 的对立面:
alias workoff='deactivate'
很容易记住:
[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$
在哪个文件中? .bashrc?
@seyed 是的,请参阅 this answer 以获取 ~/.bashrc 中的别名示例
我喜欢这个别名。让我想起了空手道小子(waxon;waxoff)
@C0deH4cker:我登录了 SO 并回到这个问题只是为了 +1 你的评论:p
答4:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
要激活 Python 虚拟环境:
$cd ~/python-venv/
$./bin/activate
要停用:
$deactivate
在 OS X10.11.1 的终端中,我似乎必须使用:$source activate
我不需要来源。我做了 $cd /to/dir/i/want/my/virtualenv/installed 然后 $virtualenv name_i_want_for_it 然后 $. name_i_want_for_it/bin/activate virtualenv 对我来说似乎还是有点不对劲。需要改进...
“来源”与“。”相同。 command.. 两者都可以用来获取文件
答5:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
我发现在 Miniconda3 环境中我必须运行:
conda deactivate
deactivate 和 source deactivate 都不适合我。
deactivate 用于 virtualenv,而 source deactivate 用于 Linux 上的旧 conda。 conda deactivate 是 conda envs(不是 virtualenvs)的一种很好的跨平台方式
答6:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
您可以使用 virtualenvwrapper 来简化使用 virtualenv 的方式。
安装 virtualenvwrapper:
pip install virtualenvwrapper
如果您使用的是标准外壳,请打开您的 ~/.bashrc 或 ~/.zshrc(如果您使用 Oh My Zsh)。添加这两行:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
要激活现有的 virtualenv,请使用命令 workon:
$ workon myenv
(myenv)$
为了停用您的 virtualenv:
(myenv)$ deactivate
这里是my tutorial,一步一步介绍如何安装 virtualenv 和 virtualenvwrapper。
与内置的 virtualenv 相比,我看不出有什么不同
@NamGVU 注意 workon 命令,它适用于任何目录。
正如另一篇文章的评论中提到的(并且 Stackoverflow 没有实用的方法来指向它),如果没有首先获取定义此函数的脚本,您就不能在 shell 脚本中使用 deactivate (在这种情况下,您将拥有 找不到命令...错误)
答7:
与HuntsBot一起,探索全球自由职业机会–huntsbot.com
对于我的特殊情况,我转到工作目录
CD /myworkingdirectory
然后我像这样激活我的环境:
my-env/scripts/activate
从同一个工作文件夹(/myworkingdirectory)停用,我尝试了这个,但它什么也没做:
my-env/scripts/deactivate
这确实有效:
deactivate
答8:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
使用 venv 的 activate 脚本提供的 deactivate 功能需要您相信停用函数已正确编码才能将所有环境变量干净地重置为之前的状态 – 不仅要考虑原始激活,以及您在此期间可能完成的任何开关、配置或其他工作。
这可能没问题,但它确实引入了一种新的、非零的风险,即事后修改您的环境。
但是,从技术上讲,进程无法直接更改其父进程的环境变量,因此我们可以使用单独的子 shell 来确保我们的 venv 不会留下任何残留物背后的变化:
激活:
$ bash –init-file PythonVenv/bin/activate
这会在 venv 周围启动一个新的 shell。您原来的 bash shell 保持不变。
要停用:
$ exit 或 [CTRL]+[D]
这会退出 venv 所在的整个 shell,并从激活脚本对环境进行任何更改之前返回到原始 shell。
例子:
[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!
[user@computer ~]$ bash --init-file PythonVenv/bin/activate
(PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV
/home/user/PythonVenv
(PythonVenv) [user@computer ~]$ exit
exit
[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!
答9:
huntsbot.com – 高效赚钱,自由工作
由于通过在 ~/bin 中查找此类命令的常规方法无法发现通过采购 ~/bin/activate 创建的 deactivate 函数,因此您可能希望创建一个仅执行函数 deactivate 的函数。
问题是一个名为 deactivate 的脚本包含一个命令 deactivate 如果在不在 venv 中时意外执行,将导致无限循环。一个常见的错误。
这可以通过仅在函数存在时执行 deactivate 来避免(即已通过采购 activate 创建)。
#!/bin/bash
declare -Ff deactivate && deactivate
答10:
一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会
运行 deactivate [name of your environment] 可以退出/停用您的 Python 环境。
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\klongwood3\Desktop> py -m venv env1
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:~$
答11:
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
我使用基于 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 目录时,虚拟环境会自动退出。
“Development tree utiles” 只是一个名字……这里没有任何与光明会相关的隐藏含义。
原文链接:https://www.huntsbot.com/qa/Dk0W/how-to-leave-exit-deactivate-a-python-virtualenv?lang=zh_CN&from=csdn
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
文章出处登录后可见!