无法在 Jupyter notebook python 中停用 virtualenv

Posted

技术标签:

【中文标题】无法在 Jupyter notebook python 中停用 virtualenv【英文标题】:Unable to de-activate virtual env in Jupyter notebok python 【发布时间】:2020-10-12 01:05:35 【问题描述】:

我已经提到了这个相关的post,但它没有帮助。请参考下面的详细信息

我正在学习 python 虚拟环境并尝试执行一些基本命令。

虽然我可以激活virtualenv,但我无法取消激活它。

jupyter notebbok 文件当前在路径中 /home/abcd

以下是我尝试过的

!mkdir python-virtual-environments
!cd python-virtual-environments
!virtualenv env
!. env/bin/activate   # here `source` didn't work. So, I replaced it with `.` and it started working
!. deactivate # doesn't work. I tried `! deactivate` but it doesn't work

我收到以下错误

**`/bin/sh: 1: .: deactivate: not found`**

我有两个问题

a) 如何停用我创建的 virtualenv env?正确的命令是什么?

b) 为什么在我当前的工作目录中创建了env 文件夹?根据mkdircd 命令,它不应该在python-virtual-environments 下吗?

【问题讨论】:

您使用的是哪个操作系统? 我使用的是 Windows 10 【参考方案1】:

如何停用我创建的虚拟环境?正确的命令是什么?

只需重新启动内核 - 就可以了。或者,只需执行deactivate

为什么在我当前的工作目录中创建了 env 文件夹?不应该在基于mkdir和cd命令的python-virtual-environments下吗?

每次您使用! 命令时,您都在创建一个执行该命令的新shell——换句话说,当您cd 时您将进入该文件夹,但下一个命令又回到了根目录。因此,您可以这样做:

!mkdir python-virtual-environments && cd python-virtual-environments && virtualenv env && source python-virtual-environments/env/bin/activate

然而,应该提到的是,这实际上并没有激活 Jupyter notebook 中的 virtualenv,因为这根本不是 virtualenvs 的工作方式。虚拟环境将保存实际的 Python 可执行文件以及所有相关的 pip 可安装包。除非您稍后通过!python 命令调用 Python,否则通过笔记本获取它不会有太大作用。

【讨论】:

感谢您的回复。赞成。但是当我输入env/bin/deactivate时,我得到这个错误消息/bin/sh: 1: .: Can't open env/bin/deactivate...是因为没有deactivate file吗? 抱歉,已解决。 deactivate 是一个变量,在您获取 activate 文件后可供您使用。 对不起,我是 Python 新手,我不明白你在说什么。我很抱歉。我正在关注一个教程并激活了一个虚拟环境,现在我想停用它。由于我的env/bin 下没有deactivate 文件,我们现在该怎么办?我没有做任何更改或删除bin 文件夹下的文件。为什么那个文件不见了? 检查上面的评论回复(在此线程中,在您之前 15 秒发布)。 然而:virtualenv 打算在 Jupyter notebook 中使用。不仅如此,它不会像你希望的那样工作。【参考方案2】:

对于 Windows(使用 Windows 10 测试):

deactivate 与您的激活脚本位于同一文件夹中。

所以要停用也可以使用前置路径:env/scripts/deactivate

【讨论】:

嗨@Alexander Kosik,当我输入env/bin/deactivate 时,我收到此错误消息/bin/sh: 1: .: Can't open env/bin/deactivate 是不是因为我的bin文件夹下没有deactivate文件? 手动检查 python-virtual-environments/env/bin/deactivate 中是否存在停用文件,这必须是这种情况,并根据您当前的位置在前面加上一个路径来调用它 不,文件不存在。 @AlexanderKosik deactivate 是一个由env/bin/activate 部分提供的shell 函数——它本身不是一个文件。如果您要在终端中使用source env/bin/activate,您只需执行deactivate 即可停用它——而不是运行/获取另一个shell 脚本。希望这可以清除它:)

以上是关于无法在 Jupyter notebook python 中停用 virtualenv的主要内容,如果未能解决你的问题,请参考以下文章

在Pytorch中安装jupyetr notebook后,输入jupyter notebook命令无法直接跳出浏览界面

无法在 Jupyter Notebook 中导入 TensorFlow

无法在 Jupyter Notebook 中启动张量板

无法在子目录中创建Jupyter Notebook

无法在 jupyter notebook 中导入 sparkdl

无法在 Jupyter Notebook 中显示 graphviz 树