Conda环境中使用Screen时无法调用已安装的TensorFlow问题
解决Conda环境中Screen内TensorFlow模块找不到的问题
这问题我之前碰到过好几次,核心原因就是Screen会话没继承当前激活的Conda环境的环境变量,导致它默认调用系统自带的Python,而不是你环境里装了TensorFlow的那个Python版本。下面是几种靠谱的解决办法,按优先级推荐:
一、最直接的临时解决:激活环境后再启动Screen
这是最简单的操作,适合偶尔用Screen的场景:
- 先在你的终端里激活TensorFlow所在的Conda环境:
conda activate 你的环境名(比如conda activate tf2.x) - 接着直接启动Screen:
screen - 现在在Screen会话里运行
python -c "import tensorflow",应该就能正常导入模块了
你可以验证一下:在正常终端和Screen里分别运行which python,会发现正常终端显示的是Conda环境里的Python路径,而按上面步骤开的Screen也会显示同样的路径,说明环境变量继承成功了。
二、一劳永逸的配置:让Screen自动继承环境变量
如果经常用Screen,不想每次都重复激活环境,可以修改Screen的配置文件:
- 打开(或新建)你的用户目录下的
.screenrc文件:nano ~/.screenrc - 添加这一行配置:
shell -$SHELL - 保存退出后,重启Screen(关掉旧会话再开新的),之后不管你当前终端有没有激活Conda环境,启动的Screen都会自动继承当前的环境变量
三、旧会话的补救办法
如果已经有一个没继承环境的旧Screen会话,不想关掉它的话,也可以在会话里手动激活环境:
- 进入旧会话后,直接运行
conda activate 你的环境名 - 再执行Python命令,就能正常导入TensorFlow了
额外提醒
- 如果你用
screen -r恢复旧会话,这个会话的环境变量是创建时的状态,所以还是得手动激活一次,或者干脆关掉旧会话,用新的配置重新开一个 - 确保你的Conda已经正确初始化了:正常终端里能直接用
conda activate命令,如果不行,先运行conda init bash(对应你的shell,比如zsh就换成conda init zsh)
内容的提问来源于stack exchange,提问作者rgaut
相关产品推荐
相关产品推荐

