【问题标题】:How to execute a script in a virtual environment from a bash script on server?如何从服务器上的 bash 脚本在虚拟环境中执行脚本?
【发布时间】:2020-03-10 09:52:23
【问题描述】:

我正在尝试使用 oarsub 在服务器的虚拟环境中运行 python 脚本:

所以首先我在服务器名称“a”中运行这个命令:

oarsub -l /host=1/gpu=1,walltime=2:00:00 './training_corpus1.sh'

training_corpus1.sh 一开始是这样的:

#!/bin/bash

cd /home/ge/ke/anaconda3/envs

source activate env

cd ~/eXP/bert

CUDA_VISIBLE_DEVICES=0,1 python training.py \
    --exp_name bert \ ...

在开始时,我想打开我的虚拟环境,然后运行脚本,但我总是在 OAR.18651.stderr 文件中收到此错误:


./training_corpus1.sh: line 5: activate: No such file or directory
Traceback (most recent call last):
  File "training.py", line 18, in <module>
    from xlm.slurm import init_signal_handler, init_distributed_mode
  File "/home/ge/ke/eXP/bert/xlm/slurm.py", line 11, in <module>
    import torch
ImportError: No module named torch


Torch 位于我的虚拟环境中,它似乎没有打开。当使用“conda”时,我得到了一个“源”的位置:

./training_corpus1.sh: line 5: conda: command not found

【问题讨论】:

标签: python anaconda pytorch virtualenv


【解决方案1】:

对于虚拟环境和bash,激活命令是

source env/bin/activate

其中env是要激活的虚拟环境的目录。

PS。让我建议您使用 set -e 启动任何脚本,以便在任何错误时快速失败:

#!/usr/bin/env bash
set -e
…

【讨论】:

  • 所以我应该写 source /home/ge/ke/anaconda3/envs/env/bin/activate ?
  • cd /home/ge/ke/anaconda3/envs 之后可以使用相对路径:source env/bin/activateenv 现在是当前目录的子目录。
  • 它解决了这个问题:./training_corpus1.sh:第 8 行:env/bin/activate:没有这样的文件或目录,它似乎在 env/bin 中不存在激活,例如:(env) ke@dere2 :~/anaconda3/envs/env/bin$ cd activate -bash: cd: activate: Aucun fichier ou dossier de ce type
  • activate 必须存在于虚拟环境中,并且必须是 bash 脚本。不过不确定conda
猜你喜欢
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多