【问题标题】:screen inside the conda environment doesnt workconda 环境中的屏幕不起作用
【发布时间】:2018-11-08 13:18:23
【问题描述】:

如果我在一个安装了 tensorflow 的 conda 环境中,如果我进入屏幕,然后进入 python -c "import tensorflow";,它会说找不到模块。但是它在没有屏幕的情况下运行良好。

【问题讨论】:

  • which python 在这两种情况下的输出是什么?您如何确保可以使用 conda?正在编辑 .bash_profile?
  • @rgaut 一旦你进入屏幕。再次停用并激活环境。这是克服错误的愚蠢方法。但有效。

标签: anaconda conda gnu-screen


【解决方案1】:

我有同样的问题:我激活了我的一个 conda 环境,比如说 my_env,我可以在 my_env 中使用 tensorflow。然后,我进入屏幕。在这里,我不能再导入 tensorflow。这很奇怪,因为在屏幕上,我仍然看到在“conda env list”中激活了 my_env,或者在“conda list”中列出了 tensorflow。

我的一个解决方法是在进入屏幕之前停用该环境。进入屏幕后,我激活 my_env。然后,我可以使用 my_env 中包含的 tensorflow。

【讨论】:

  • 谢谢!在进入屏幕之前关闭环境有效!
  • 您的解决方法也对我有用。不过这很奇怪,这个错误绝对应该报告和修复。
  • 在我的情况下,我还需要在停用后创建一个新屏幕。分离、停用 env 和重新附加都不起作用。
【解决方案2】:

您需要做的就是在进入屏幕之前停用环境

source deactivate

然后进入画面

screen -R my_screen 

然后激活环境

source activate myenv

这是屏幕上的错误。它将显示环境myenv,但实际上并未激活。但是屏幕变量说它已经被激活了。因此,您无法在屏幕上再次激活它。

解决办法是在屏幕外停用。然后进入屏幕。并再次激活环境。

【讨论】:

    【解决方案3】:

    这个问题是由在你的 $HOME/.bashrc 文件中有如下一行造成的:

    export PATH=$HOME/anaconda3/bin:$PATH
    

    当屏幕启动时,它将再次运行您的 .bashrc 脚本,并导致路径前附加另一个版本的 $HOME/anaconda3/bin。即使您在屏幕会话中再次激活虚拟环境,shell 最终也会使用错误的 python 副本。

    使用 Anaconda > 4.4 解决此问题的推荐方法是删除设置路径的行并将以下内容添加到您的 .bashrc 文件中

    . $HOME/anaconda3/etc/profile.d/conda.sh
    

    这还有一个额外的优势,您现在可以使用 conda 命令激活和停用 anaconda 环境。例如

    conda activate myenv
    

    更多信息请查看https://github.com/conda/conda/blob/master/CHANGELOG.md#440-2017-12-20

    【讨论】:

    • 赞成,但我需要验证这确实是问题的原因:)
    • 使用conda activate myenv 是个坏主意。最好使用source activate myenv
    • 有没有办法像在父终端中一样启动屏幕并自动将其放入保存 conda env 中。?我尝试编辑 .screenrc 但失败了 (stackoverflow.com/questions/57705407/…)
    【解决方案4】:

    可以先sartscreen,再激活conda环境conda activate my_env

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      相关资源
      最近更新 更多